2010-11-06 74 views
0

我有两个使用jquery的发布请求和使用这些帖子结果的方法。因此,代码是这样的:我如何知道jQuery何时完成ajax请求

post1 
post2 
function 

如何让代码等待两个POST1和POST2调用的函数前完成?我试着做了一个while循环来查看post1和post2的数据是否都已经设置好了,但是它挂起了浏览器。我可以同步地调用它们,但是这比放置两个请求并等待它们完成要慢。除了JavaScript以外,任何多线程语言都可以很容易地解决这个问题,因为它不是多线程的,因此不支持等待一系列“线程”完成。

回答

2

保持请求计数,并在您的回调中修改它,然后查看是否有任何剩余运行。

var count = 2; 
var callback = function() { 
    count--; 
    if (!count) { 
     both_ajax_called_successful(); 
    } 
}; 

jQuery.ajax({url: 'example1', success: callback}); 
jQuery.ajax({url: 'example2', success: callback}); 
+0

这个。在回调中执行此操作非常重要,而不是使用setTimeout来监视已完成多少个Ajax调用。 – Collin 2010-11-07 00:19:17

1

声明一个计数器,其值是请求数量,每次获得响应时减去一个值。当值为0时,所有请求都应该完成。