这个问题几乎相同:Wait until all jQuery Ajax requests are done?
但我的问题很明显:
我正在做很多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中阅读了这些文档,但该方法似乎不支持这种情况(将jqXHR
列表传递给$.when
函数)
怎么可能? Plz帮助。
答案 0 :(得分:5)
你需要将promises作为参数列表(如$.when(promise1, promise2, promise3)
)传递给$.when(),而不是数组,所以请使用Function.apply()。
$.when.apply($, events).then(function() {
// do something when all requests are done.
});