我有一系列承诺(Q)函数:
var tasks = [p, p, p, p, ...];
我希望能够异步或同步执行它们,并检测所有承诺何时执行。我能够同步工作:
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);
});
但是,如何检测异步工作时所有promises的执行时间? 任何帮助将不胜感激。
该示例来自Q doc
答案 0 :(得分:2)
您不想使用forEach
,而是map
来从您的函数数组中获取一系列承诺。有了这个,您可以使用Q.all
来获得所有结果的承诺(当所有承诺都已解决时):
Q.all(tasks.map(function(f) {
return f();
})).then(function() {
console.log("finished")
});