[英]How to use Q.all() with complex array of promises?
考虑我有一系列对象和承诺,例如:
[{
a: 1
}, {
a: 4
}, {
a: 4
}, {
promiseSend: [Function],
valueOf: [Function]
}, {
promiseSend: [Function],
valueOf: [Function]
}]
现在,当调用I Q.all(arr)
并返回then()
的对象值时,没有任何事情发生,仍然我的数组包含promise对象。 有没有办法使用Q.all()
和这样一个复杂的数组?
这就是Q应该如何运作。
要获得所有值,而不是承诺,您可以使用.spread()
:
Q.all([a, b]).spread(function (a, b) {
return a + b;
});
spread()
回调的每个参数都是每个promise的结果。
如果你认为你在这样的数组中有很多的承诺,那么循环通过then()
提供的参数并用它的值替换promises:
Q.all(promises).then(function(result) {
for (var i = 0, len = result.length; i < len; i++) {
if (Q.isPromise(result[i])) {
result[i] = result[i].valueOf();
}
}
// Next step!
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.