Javascript 异步/顺序承诺,检测结束

Javascript 异步/顺序承诺,检测结束,javascript,promise,q,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") }); var result = Q(); tasks.forEach(f

我有一系列承诺(Q)函数:

var tasks = [p, p, p, p, ...];
我希望能够异步或同步执行它们,并检测所有承诺何时都已执行。我能够使它同步工作:

1)同步

tasks.reduce(function(prev,cur){
    return prev.then(cur);
}, Q.resolve()).then(function() {
   console.log("finished")
});
var result = Q();
tasks.forEach(function (f) {
   return result.then(f);
});
2)异步

tasks.reduce(function(prev,cur){
    return prev.then(cur);
}, Q.resolve()).then(function() {
   console.log("finished")
});
var result = Q();
tasks.forEach(function (f) {
   return result.then(f);
});
但是,在异步工作时,如何检测何时执行了所有承诺? 任何帮助都将不胜感激


示例取自您不希望使用
forEach
,而是希望使用
map
从函数数组中获取承诺数组。这样,您就可以使用获得所有结果的承诺(当所有承诺都得到解决时):


任务是标准的Javascript数组吗?更好的标题应该是(1)串联,和(2)并联。两者都涉及异步。