javascript - 异步/顺序 promise ,检测结束

标签 javascript promise q

我有一系列 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/

相关文章:

promise - q.js : Is it possible to know if a promise has resolved/rejected or not

javascript - Node.js Promises Q.all 不起作用

javascript - JavaScript Promise 中的 "Resolve"函数

php - Chrome 中的 JavaScript 问题

javascript - 如何在 JavaScript 中编写递归阻塞函数而不溢出堆栈?

javascript - 使用javascript检查用户是否输入了正确的值

javascript - 使用 Promise.all 避免唯一错误 E11000

node.js - 在 TypeScript 中,如何将 Promises 与 Node.js 上的 RSVP 实现结合使用

javascript - 将node.js代码编译为非node需要的代码

javascript - 如何正确地从Kotlin.js开始