Async / Sequentials承诺,检测结束

时间:2015-04-09 13:57:04

标签: javascript promise q

我有一系列承诺(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

1 个答案:

答案 0 :(得分:2)

您不想使用forEach,而是map来从您的​​函数数组中获取一系列承诺。有了这个,您可以使用Q.all来获得所有结果的承诺(当所有承诺都已解决时):

Q.all(tasks.map(function(f) {
   return f();
})).then(function() {
   console.log("finished")
});