Ожидание завершения сетевого запроса

130
07 января 2020, 23:30

Всем привет !

Мне захотелось совместить Python и JS для попытки написания простого веб-чата. Сервер на Python написать я сумел, и для клиентской части выбрал AJAX. Почему нет websocket ? Потому что пока что я не имею полного понимания его работы (как и AJAX'а собственно), а следовательно правильно сервер написать не смогу.

Функцию отправки сообщения из формы я написал, и приступил к функции получения сообщений для клиентской части. Немного подумав я решил использовать следующий порядок получения сообщений. Клиент делает AJAX-запрос и ожидает когда сервер ему ответит (timeout:0), сервер конечно же отвечает лишь по мере появления нового сообщения, и только после того как AJAX получит ответ и запишет его в html-код, он снова делает запрос. Таким образом и сервер особо не нагружается и лишнего сетевого трафика нет.

И тут-то вся проблема.

Я пробовал присваивать запросу переменную и проверять код элемента readyState, он должен быть равен 4 если запрос выполнился и ответ получен, но это замораживает страницу браузера.

В чем собственно вопрос.

Как заставить скрипт проверять получен ли ответ и лишь после этого делать запрос заново ?

UPD: добавил скрин того как в цикле проверку делал.

Answer 1

У jQuery есть метод $.when для того, чтобы дождаться разрешения нескольких ajax-запросов:

$.when.apply($, deferreds).done(function () {
    /* здесь код, который должен выполниться по окончанию всех аякс-запросов */
});
READ ALSO
Как парсить xml файл на c#?

Как парсить xml файл на c#?

Как вытянуть данные узла температур из данного xml файла, который расположен по ссылке https://xmlmeteoservice

151
Элемент формы похожий на строку excel

Элемент формы похожий на строку excel

Подскажите пожалуйста, какой элемент формы (c# winforms vs2010 net40) может выполнять функции как на рисунке ниже, т

156
Останавливать ли таймер при выходе из функции или сборщик мусора о нём позаботится?

Останавливать ли таймер при выходе из функции или сборщик мусора о нём позаботится?

Я использую Stopwatch таймер для засекания времени выполнения участков кода в функциях моих проектовПо-хорошему, перед выходом из функции, в которой...

138
Переключатель Switch в диалоговом окне

Переключатель Switch в диалоговом окне

есть диалоговое окно с Switch и TextView, хочу при переключении Switch отображать или прятать TextViewНиже приведенный код не работает, пробовал на переключение...

130