等到jquery ajax请求列表完成?

Alf*_*ang 1 javascript ajax jquery

这问题几乎相同:等到所有jQuery Ajax请求都完成了?

但我的问题是克服:

我正在做很多ajax请求,并将它们保存在一个数组中:

var events = [];

for(var i = 0; i < 10; ++i) {
    events.push($.ajax({...}));
}

$.when(events).done(function() {
   // do something when all requests are done.
});
Run Code Online (Sandbox Code Playgroud)

正如相关问题所述,$ .when方法按顺序获取了一些jqXHR对象,但在这里我想要一个列表.

我在http://api.jquery.com/jQuery.when/#jQuery-when-deferreds中阅读了这些文档,但该方法似乎不支持这种情况(将一个列表传递jqXHR$.when函数)

怎么会这样?Plz的帮助.

Aru*_*hny 5

你需要将promises作为参数列表(例如$.when(promise1, promise2, promise3))传递给$ .when(),而不是作为数组,所以使用Function.apply().

$.when.apply($, events).then(function() {
   // do something when all requests are done.
});
Run Code Online (Sandbox Code Playgroud)