我在页面上有两个并发的ajax调用。我希望在两个函数完成(并且成功)时调用函数。
效率低下的解决方案:
不幸的是,这打破了并发性。
我能以其他方式达到同样的效果吗?
答案 0 :(得分:1)
前几天查看this answer I gave to pretty much the same question,并查看我创建的the demo(查看该页面上的源代码以查看完整代码)。它可以更有效地利用JavaScript的固有功能和整体性质作为一种语言,而不是篡改标志变量,恕我直言; - )
答案 1 :(得分:1)
$(document).ajaxStop(function() {
//do your JQuery stuff;
});
答案 2 :(得分:0)
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
}
答案 3 :(得分:-1)
设置全局变量ajax_call_A_complete 设置另一个全局变量ajax_call_B_complete 将这两个变量设置为false
没有同时进行ajax调用。在成功回调两个ajax调用时,将varialbes设置为true。我的意思是ajax调用A会将ajax_call_A_complete设置为true,而ajax调用B会将varialbe ajax_call_B_complete设置为true。
设置一个周期时间,每隔2秒检查这两个变量的值。当两个变量都为真时,请关闭您的相关任务。