![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: нет Всего: 25 |
Привет.
Я использую JsHttpRequest (http://dklab.ru) при работе с AJAX. При запуске нескольких запросов я замечаю, что запросы выполняются по очереди. Т.е. в цикле отправляю несколько запросов, устанавливаю callback-функцию, каждая из callback-функций добавляет строку в таблицу. В результате я вижу, что не смотря на то, что запросы "висят" уже отправленными в FF, ответ от сервера для них подгружается друг за другом, а не параллельно, что естественно, очень мешает, т.к. AJAX мне нужен для параллельности. Это проблема JsHttpRequest или просто JS ? Смогу ли я её исправить, покопавшись в коде библиотеки ? Или может быть это проблема сервера? (запросы от одного и того же хоста не обрабатываются параллельно?) Вообщем хотелось бы сделать, чтобы запросы AJAX стреляли параллельно, а не друг за другом. Это сообщение отредактировал(а) flashaa - 20.3.2008, 13:45 |
|||
|
||||
vasac |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 13 Всего: 36 |
Что вы подразумеваете в данном случае под параллельностью? Запросы оправлены один за другим, не дожидаясь ответов от предыдущего, что еще вам нужно?
|
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: нет Всего: 25 |
Мне нужно чтобы каждый запрос обрабатывался полностью параллельно. Ну отправляются они будем считать параллельно - с мизерной разницей во времени, а ответ приходит последовательно. Это судя по фаербагу, на самом деле, точно я не знаю, где именно вкрадывается последовательность. Может XmlHttpRequest все запросы вешает в очередь. А фаербаг повешенные в очередь запросы отображает как отправленные. Дело в том, что отправляемые запросы имеют разное время выполнения. Чтобы быстрые запросы раньше выполнялись и соответствующие части сайта быстре обновлялись. Для их распараллеливания я и сделал AJAX. А поскольку вижу, что результат работы выглядит последовательно, то это, соотвественно, не радует. Вот мне и надо узнать, может ли JS вообще это обеспечить? Если да, буду думать со стороны сервера. Это сообщение отредактировал(а) flashaa - 20.3.2008, 14:33 |
|||
|
||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
Если у тебя один объект типа XMLHttpRequest, то естественно, что при каждом AJAX-запросе предыдущий будет "забиваться", то есть выполнять их можно только последовательно.
Для параллельной обработки AJAX-запросов обычно используется техника javascript'а - Closures. Копай в эту сторону. Там ничего сложного, просто каждый созданный объект XMLHttpRequest создается при формировании запроса и исчезает при завершении, передав управление callback-функции. Очень важное замечание: браузеры очень по-разному относятся к количеству AJAX-запросов. Так, IE позволяет их только 2! А возиться с пулами запросов зачастую слишком дорого и овчинка не стоит выделки. |
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: нет Всего: 25 |
Не один объект. Там new XmlHttpRequest на каждый запрос. Так и есть. Нифига ж себе, посмотрю. Спасибо за инфу. Добавлено через 11 минут
Может быть странно, но тестил на ИЕ6 и реакция браузера ничем не отличалась от ФФ, Оперы. Выбрасывается 21 запрос. |
|||
|
||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
Покопался в своих записях и нашел первоисточник моей информации, которую я ранее использовал: AJAX FAQ
Там смотри рубрику "Как обрабатывать параллельные AJAX-запросы?" Надеюсь, поможет. Добавлено через 2 минуты и 4 секунды Сейчас увидел внизу этой странички ссылку на подобную тему, рассматриваемую ранее ... Смотрю, там были серьезные обсуждения и решение вроде найдено. Советую заглянуть. А решение, которое я указал, оказывается, чисто Sun'овское. |
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: нет Всего: 25 |
Cпасибо, с AJAX-ом все было хорошо. Проблема была с технической стороны - все запросы шли во время одного соеденения с сервером и потому обрабатывались последовательно. Заголовок Connection: close в запросах AJAX указал на то, что после запроса соединение надо закрывать и в результате запросы стали обрабатываться параллельно.
|
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |