This article显示了wait
如何完成动态数量的ajax请求。他做了以下事情:
var deferredArr = $.map($(".dynaload"), function(el, i) {
return $.ajax({
url: $(el).data("loadUrl"),
success: function(html) {
$(el).html(html);
}
});
});
$.when.apply(this, deferredArr).then(function() {
alert("All Done Loading!");
});
问题是解析延迟的函数需要与延迟一样多的参数。所以,如果我这样做:
$.when.apply(this, deferredArr).then(function(data) {
alert("All Done Loading!");
});
然后data
只是第一个承诺的结果。如何在不依赖于将结果附加到数组中的情况下获得所有结果?
答案 0 :(得分:3)
参数数量未知的函数可以使用特殊的arguments
数组:
$.when.apply(this, deferredArr).then(function() {
for (var i = 0; i < arguments.length; i++) {
console.log("Promise "+i+" returned: "+arguments[i]);
}
alert("All Done Loading!");
});
有关文档和参数使用的更多示例,请参阅MDN documentation。