| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Параллельные AJAX-запросы |
| Автор: flashaa 20.3.2008, 13:44 |
| Привет. Я использую JsHttpRequest (http://dklab.ru) при работе с AJAX. При запуске нескольких запросов я замечаю, что запросы выполняются по очереди. Т.е. в цикле отправляю несколько запросов, устанавливаю callback-функцию, каждая из callback-функций добавляет строку в таблицу. В результате я вижу, что не смотря на то, что запросы "висят" уже отправленными в FF, ответ от сервера для них подгружается друг за другом, а не параллельно, что естественно, очень мешает, т.к. AJAX мне нужен для параллельности. Это проблема JsHttpRequest или просто JS ? Смогу ли я её исправить, покопавшись в коде библиотеки ? Или может быть это проблема сервера? (запросы от одного и того же хоста не обрабатываются параллельно?) Вообщем хотелось бы сделать, чтобы запросы AJAX стреляли параллельно, а не друг за другом. |
| Автор: vasac 20.3.2008, 14:04 |
| Что вы подразумеваете в данном случае под параллельностью? Запросы оправлены один за другим, не дожидаясь ответов от предыдущего, что еще вам нужно? |
| Автор: IDVsbruck 20.3.2008, 14:51 |
| Если у тебя один объект типа XMLHttpRequest, то естественно, что при каждом AJAX-запросе предыдущий будет "забиваться", то есть выполнять их можно только последовательно. Для параллельной обработки AJAX-запросов обычно используется техника javascript'а - Closures. Копай в эту сторону. Там ничего сложного, просто каждый созданный объект XMLHttpRequest создается при формировании запроса и исчезает при завершении, передав управление callback-функции. Очень важное замечание: браузеры очень по-разному относятся к количеству AJAX-запросов. Так, IE позволяет их только 2! А возиться с пулами запросов зачастую слишком дорого и овчинка не стоит выделки. |
| Автор: flashaa 20.3.2008, 15:07 | ||||||
Не один объект. Там new XmlHttpRequest на каждый запрос.
Так и есть. Нифига ж себе, посмотрю. Спасибо за инфу. Добавлено через 11 минут
Может быть странно, но тестил на ИЕ6 и реакция браузера ничем не отличалась от ФФ, Оперы. Выбрасывается 21 запрос. |
| Автор: IDVsbruck 20.3.2008, 16:56 |
| Покопался в своих записях и нашел первоисточник моей информации, которую я ранее использовал: http://www.internet-technologies.ru/articles/article_1063.html Там смотри рубрику "Как обрабатывать параллельные AJAX-запросы?" Надеюсь, поможет. Добавлено через 2 минуты и 4 секунды Сейчас увидел внизу этой странички ссылку на подобную тему, рассматриваемую ранее ... Смотрю, там были серьезные обсуждения и решение вроде найдено. Советую заглянуть. А решение, которое я указал, оказывается, чисто Sun'овское. |
| Автор: flashaa 22.3.2008, 18:23 |
| Cпасибо, с AJAX-ом все было хорошо. Проблема была с технической стороны - все запросы шли во время одного соеденения с сервером и потому обрабатывались последовательно. Заголовок Connection: close в запросах AJAX указал на то, что после запроса соединение надо закрывать и в результате запросы стали обрабатываться параллельно. |