一尘不染

等到jquery ajax请求列表完成?

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.
});

正如相关问题所表明的那样,$ .when方法 按顺序 接受 一些jqXHR对象,但是在这里我要 列出它们的清单

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

怎么会这样?请帮助。


阅读 188

收藏
2020-07-26

共1个答案

一尘不染

您需要将promise作为参数列表(如$.when(promise1, promise2, promise3))传递给$
.when()
,而不是作为数组传递,因此请使用Function.apply()

$.when.apply($, events).then(function() {
   // do something when all requests are done.
});
2020-07-26