如何检测正在运行的异步AJAX调用并将另一个调用放入jQuery队列?

时间:2011-06-24 05:25:39

标签: jquery android ajax asynchronous cordova

我使用jQuery在Android中安装了PhoneGap应用。有时我需要使用$ .post异步上传大量数据,因此数据是在后台发送的。这工作正常,但它连接速度较慢,需要一些时间。我发现,触发另一个异步AJAX调用将导致第一次调用中止。

有没有办法检测是否存在正在进行的异步AJAX以及是否为YES,而不是如何将另一个异步AJAX调用放入队列并在第一个完成时启动它?

2 个答案:

答案 0 :(得分:1)

另一种选择是保存对jqXHR对象的引用,然后可以调用complete方法来查看它是否已完成。

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

}); 

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

上述所有内容均在手册页http://api.jquery.com/jQuery.post/

中讨论

您可以处理此问题并添加计时器。然后,如果它没有完成,只需设置一个计时器几秒钟,然后再次检查它是否已经完成。

答案 1 :(得分:0)

关于检测正在进行的异步AJAX请求,您可以使用一些在调用开始时使用某个值初始化的变量,并在调用完成时将其设置为其他值。

对于第二部分,如果尚未设置该特定变量,则将函数调用添加到您使用'ajaxComplete'事件的处理程序处理的某个队列。或者,通过.complete()传递一个回调来执行回调。