Q.js Q.all()当promise数组的长度不确定时

时间:2014-08-28 05:14:19

标签: javascript promise

我想使用Q.all()返回一个promise数组; 像这样:

return Q.all([
              list[0].getCssValue('height'),
              list[1].getCssValue('height'),
              ...,
              list[list.length-1]
              .getCssValue('height')
             ]);

我需要返回数组中的所有列表,我可以通过array.length获得长度。

问题是我无法

   for(var i = 0; i < list.length; i++)

制作像

这样的退货商品
list[i].getCssValue('height'); 

那我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

嗯,你实际上可以通过创建一个新数组来实现它:

var arr = []
for(var i = 0; i < list.length; i++){
    arr.push(list[i].getCssValue('height');
}
return Q.all(arr); // wait for all getCssValue actions

但是,.map有一种更优雅的方式,可以将每个元素从一个数组映射到另一个数组:

return Q.all(arr.map(function(x){ return x.getCssValue('height'); });