jquery ajax:所有请求完成后调用函数

时间:2009-06-09 15:55:35

标签: javascript jquery ajax

我在页面上有两个并发的ajax调用。我希望在两个函数完成(并且成功)时调用函数。

效率低下的解决方案:

  1. 制作ajax电话A
  2. 成功拨打电话A,拨打电话B
  3. 关于呼叫B的成功,请调用该功能
  4. 不幸的是,这打破了并发性。

    我能以其他方式达到同样的效果吗?

4 个答案:

答案 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秒检查这两个变量的值。当两个变量都为真时,请关闭您的相关任务。