完成所有ajax查询后执行一个函数

时间:2015-04-20 15:01:30

标签: javascript jquery ajax

在我的代码中,我必须进行几次ajax调用,然后在完成所有操作后调用更新函数。我试图使用ajaxStop,但问题是如果循环没有进行任何ajax调用,则该方法不会被调用...

看起来像这样:

for (var key in data) {
  if (...) {
    $.ajax({ ... });
  }
}

$(document).ajaxStop(function () {
  updateAll(); // I need to call this function even if there was no ajax call
});

任何人都知道如果在完成前一个循环的所有ajax后调用函数(即使根本没有查询)?

由于

1 个答案:

答案 0 :(得分:1)

将返回的promises添加到数组中,然后使用$.when确定它们何时完成

var xhr = [];

for (var key in data) {
  if (...) {
      var request = $.ajax({ ... });

      xhr.push(request);
  }
}

$.when.apply($, xhr).done(updateAll);