Как обнаружить запущенный асинхронный вызов AJAX и поставить еще один в очередь в jQuery? - PullRequest
1 голос
/ 24 июня 2011

У меня есть приложение PhoneGap в Android, использующее jQuery. Иногда мне нужно загружать больший объем данных асинхронно, используя $ .post, чтобы данные отправлялись в фоновом режиме. Это работает нормально, но при медленном соединении это займет некоторое время. Я обнаружил, что запуск другого асинхронного вызова AJAX вызовет прерывание первого вызова.

Есть ли способ, как определить, существует ли какой-либо асинхронный AJAX в процессе и если ДА, чем как поместить еще один асинхронный AJAX-вызов в очередь и запустить его после завершения первого?

Ответы [ 2 ]

1 голос
/ 24 июня 2011

Другой вариант - сохранить ссылку на объект jqXHR, после чего вы можете вызвать метод complete, чтобы узнать, завершился ли он.

var jqXHR = $.post(url,data,function()
{

}); 

if(jqXHR.complete())
{
    //do second call
}

Все вышеперечисленное обсуждается на странице руководства http://api.jquery.com/jQuery.post/

Вы можете поработать над этим и добавить таймер. Затем, если он не завершен, просто установите таймер на несколько секунд и проверьте еще раз, если он еще не завершен.

0 голосов
/ 24 июня 2011

Что касается обнаружения выполняющегося асинхронного AJAX-запроса, вы можете использовать некоторую переменную, которая инициализируется некоторым значением при начале вызова и имеет другое значение после завершения вызова.если эта конкретная переменная не была установлена, добавьте вызов вашей функции в некоторую очередь, которую вы обрабатываете с помощью обработчика для события 'ajaxComplete'.В качестве альтернативы, передайте обратный вызов через .complete (), который делает что-то подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...