Jquery的promise() - 聚合解析值?

时间:2014-02-08 10:04:27

标签: jquery promise

我有一个N延迟数组:

var g=[];
var d=$.Deferred();
  g.push(d);

var d=$.Deferred();
  g.push(d);

过了一会儿,他们正在解决:

setTimeout(function (){g[0].resolve(1);},1000);
setTimeout(function (){g[1].resolve(2);},2000);

解决所有问题后:我想显示解析值的总和:

$.when.apply($,g).done(function (sum){console.log(sum)});

然而 - function (sum){...签名仅适用于第一个订单或重新开发,所以我只能在这里获得1个。

如果我想获得2 - 我应该使用:function (sum1,sum2){ ...

这是我的确切问题。我不想写`function (sum1,sum2,.....){ ...

这样做的正确方法是什么?

Jsbin

1 个答案:

答案 0 :(得分:2)

您可以使用arguments object

$.when.apply($, g).done(function () {
    for (var i = 0; i < arguments.length; i++) {
        console.log(arguments[i])
    }
});

演示:Fiddle