在$ .each中使用$ .Deferred等待AJAX​​请求

时间:2018-07-26 09:18:48

标签: jquery ajax deferred

我有一个$ .each周期,会触发一个AJAX请求。
我要做的是等所有AJAX请求完成。我不在乎这些AJAX请求的结果,问题是我必须确保它们已完成。
我认为可以使用$ .Deferred完成此操作,但是即使阅读了JQuery文档,我也无法弄清楚该怎么做。

2 个答案:

答案 0 :(得分:2)

要等待所有AJAX请求完成,可以将调用返回的jqXHR对象存储在数组中。然后,您可以将该数组应用于$.when,以便在所有请求完成后运行。试试这个:

var requests = yourDataStructure.map(function() {
  return $.ajax({
    // setup...
  });
});

$.when.apply($, requests).done(function() {
  console.log('All requests finished, do something here...');
});

答案 1 :(得分:0)

$.when(request1(), request2(), ... ,requestn()).done(function(res1, res2, ... , resn){
    // what to do when I get all the response / when it finished
});

我曾经在堆栈溢出时找到这个答案,如果可以找到链接,我会将其放在下面。

注意:别给我投票,我只是想提供帮助,我只是从堆栈溢出的某个地方提到了这一点。找到链接后,我将其放置:)