如何确保我的函数在所有 ajax 调用后执行

How to make sure my function executes after all ajax calls?

本文关键字:ajax 调用 执行 函数 何确保 确保 我的      更新时间:2023-09-26

我有一个javascript函数。在这个函数中,我有 3 个 ajax 调用。如何确保在这些 ajax 调用完成后执行我的另一个函数?

function a(){
    for(var i=0;i<3;i++)
        $.post("somePage.php").done(function(){
            do stuff here...
        });
    return false;
}
function b(){
    //.....
}

我的函数 B 会在 AJAX 调用完成后执行吗?

一个完整的解决方案将是这样的

function a() {
    var array = [], xhr;
    for (var i = 0; i < 3; i++) {
        xhr = $.post("somePage.php").done(function () {});
        array.push(xhr)
    }
    //create a promise which will be called after all the ajax request are completed
    return $.when.apply($, array);
}
function b() {
    //.....
}
//on succss callback of all the ajax requests created in a call b
a().done(b)

编写一个增量检查,在每个返回的 Ajax 上递增,如下所示:

increments = 0;
$.post("somePage.php").done(function(){
  // Check if the increments are total to 3
  ++increments;
  if(increments == 3) {
    //do something now such as call b();
  }
  //do stuff here...
});

jQuery ajaxStop 方法允许您注册一个处理程序,以便在所有 Ajax 请求完成时调用。