我在页面上有两个并发的ajax调用。当他们都完成(并成功)时,我想调用一个函数。jquery ajax:当所有请求都完成时调用函数
低效率的解决方案:
- 使得Ajax调用
- 成功的调用,使B键
- 成功呼叫B,调用函数
不幸的是,这打破了并发。
任何其他方式我可以完成相同的效果?
我在页面上有两个并发的ajax调用。当他们都完成(并成功)时,我想调用一个函数。jquery ajax:当所有请求都完成时调用函数
低效率的解决方案:
不幸的是,这打破了并发。
任何其他方式我可以完成相同的效果?
设置一个全局变量ajax_call_A_complete 设置另一个全球varialbe ajax_call_B_complete 设置这两个varialbes假
无作出AJAX调用同时。在两个Ajax调用的成功回调中,将varialbes设置为true。我的意思是ajax调用A将ajax_call_A_complete设置为true,并且ajax调用B将设置varialbe ajax_call_B_complete为true。
设置周期时间,每2秒检查这两个变量的值。当这两个变量都是真的时,请关闭您的依赖任务。
var isASuccessful = false;
var isBSuccessful = false;
function callARequest() {
$.get("path/to/url", { params: list }, function() {
isASuccessful = true;
if (isBSuccessful) {
callMeAfterAandB();
} else {
callBRequest();
}
});
}
function callBRequest() {
$.get("path/to/other/url", { params: list }, function() {
isBSuccessful = true;
if (isASuccessful) {
callMeAfterAandB();
} else {
callARequest();
}
});
}
function callMeAfterAandB() {
// todo: something
}
看一看this answer I gave to pretty much the same question有一天,也有在the demo我创建去用它(查看源代码在该网页上看到完整的代码)看看。这使得更有效地使用JavaScript的内在功能和整体性质不是摆弄标志变量的语言,恕我直言;-)
$(document).ajaxStop(function() {
//do your JQuery stuff;
});
假设是不可能设置这些标志在其他任何位置,简单的回调事件比定时器的效果好得多。 – 2009-06-09 16:10:43