如何从$.when.apply($, deferreds)
?
希望下面的尝试说明了我想要实现的目标:
var ajax1 = someAjaxFunction();
deferreds = [ajax1, ajax2, ... ajaxN];
responses = [ajax1Response, ajax2Response, ... ajaxNResponse];
$.when.apply($, deferreds).then(deferredsAllDone.apply(responses));
我需要能够访问deferredsAllDone()
中的回复,我还需要能够区分哪个回复来自哪个回复。我该如何做到这一点?
答案 0 :(得分:2)
也许这会有所帮助。您需要迭代参数,其中每个参数都是[responseData, statusText, xhrObj]
var deferreds =[];
for (var i=0; i<6; i++){
deferreds.push($.get('data.json'))
}
$.when.apply(null, deferreds ).done(function(){
console.log(arguments)
for( var i=0; i<arguments.length; i++ ){
var arg = arguments[i]
var responseData = arg[0],
statusText = arg[1],
xhrObj =arg[2];
}
});
$.when.apply().done(function() // or then
的参数与原始延迟数组的顺序相同。
我相信jQuery 3简化了$.when
以更加符合 Promises A + 并接受并返回数组但我还没有深入研究它
的 DEMO 强>