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

标签 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 完成后调用一个函数(即使根本没有查询)?

谢谢

最佳答案

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

var xhr = [];

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

      xhr.push(request);
  }
}

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

关于javascript - 完成所有ajax查询后执行一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29751481/

相关文章:

Javascript 函数不会在页面上首次加载

javascript - JSON.Parse 返回未定义

javascript - Unity - 与客户端 Javascript 和 ajax 通信。如何将数据从统一传回网页?

jquery - 单击按钮时,清除 jqgrid 并重新加载数据

javascript - 仅 Chrome : ajax freezing my javascript execution

javascript - 如何创建 jQuery 数据表向下钻取行?

jQuery 自动完成 - 用标签和值填充 2 个输入字段

jquery - Bootstrap 缩略图问题

javascript - Ajax 按钮无需刷新即可获取数据?

jquery - 添加 HTML5 list 时,我所有的 jQuery(移动)AJAX 请求都失败,状态为 0