我有一系列 Promise (Q) 函数:
var tasks = [p, p, p, p, ...];
我希望能够异步或同步执行它们,并检测所有 promise 何时已执行。我能够使其同步工作:
1) 同步
tasks.reduce(function(prev,cur){
return prev.then(cur);
}, Q.resolve()).then(function() {
console.log("finished")
});
2) 异步
var result = Q();
tasks.forEach(function (f) {
return result.then(f);
});
但是,异步工作时如何检测所有 Promise 何时已执行? 任何帮助将不胜感激。
示例取自Q doc
最佳答案
您不想使用 forEach
,而是使用 map
从函数数组中获取 Promise 数组。这样,您就可以使用 Q.all
获得所有结果的 promise (当所有 promise 都已解决时):
Q.all(tasks.map(function(f) {
return f();
})).then(function() {
console.log("finished")
});
关于javascript - 异步/顺序 promise ,检测结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29540591/