如何从$ .when.apply获取回复($,deferreds)

时间:2016-09-14 22:16:34

标签: javascript jquery ajax

如何从$.when.apply($, deferreds)

访问未知数量的回复

希望下面的尝试说明了我想要实现的目标:

var ajax1 = someAjaxFunction();

deferreds = [ajax1, ajax2, ... ajaxN];
responses = [ajax1Response, ajax2Response, ... ajaxNResponse];

$.when.apply($, deferreds).then(deferredsAllDone.apply(responses));

我需要能够访问deferredsAllDone()中的回复,我还需要能够区分哪个回复来自哪个回复。我该如何做到这一点?

1 个答案:

答案 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