我正在做3个异步ajax请求。
之后我需要执行一个函数,但只有当所有3个请求都完成时才需要。
我将如何实现这一目标?
由于我们的框架,我仅限于最新的1.4版本。
谢谢, 韦斯利
答案 0 :(得分:2)
您需要让所有响应处理程序调用相同的作用域/函数,并在那里跟踪返回的请求。仅在所有请求都返回时继续。不要忘记处理错误案例。
答案 1 :(得分:0)
您可以使用jQuery的Reactive Extension实现它。看看这个问题:trigger event after several ajax calls succeeded
答案 2 :(得分:0)
最简单且非常有限的方法就是嵌套你的ajax调用。但是只有在同一个地方同时进行这些调用时才有效。
$.ajax({
url: "test.html",
success: function(){
$.ajax({
url: "test2.html",
success: function(){
// n level nesting
}
});
}
});
答案 3 :(得分:0)
扩展Andrius的回答,我总是做一些与他相似的事情:
function f1(){
$.ajax({
url: "test.html",
success: function(data){
//do something
f2();
}
});
}
function f2(){
$.ajax({
url: "test2.html",
success: function(data){
//do something else
//maybe call f1() if you want to loop again?
}
});
}
我用这种方式连接了许多电话。有时我放setTimeout(function(){f2()},1000);
如果我想在通话之间稍微暂停一下。
我的应用程序需要从服务器进行持续轮询,所以我在链中的最后一个调用第一个。所以它将永远循环,只有一个当前调用未完成(所以我不会用请求锤击服务器)