【发布时间】:2016-12-20 00:55:54
【问题描述】:
我正在 Bluebird(或必要时使用原生 Promise)中寻找一种有效的方式来运行一个并行的 promise 数组,并在它们完成后按顺序返回它们。我猜几乎像队列锁?
所以如果我有一个包含 5 个函数的数组,函数 1 可能需要 150 毫秒,函数 2 可能需要 50 毫秒,函数 3 可能需要 50 毫秒等等。所有 5 个函数都被并行调用,但回调返回值只会按顺序响应我指定。理想情况下是这样的:
Promise.parallelLock([
fn1(),
fn2(),
fn3(),
fn4(),
fn5()
])
.on('ready', (index, result) => {
console.log(index, result);
})
.then(() => {
console.log('Processed all');
})
.catch(() => {
console.warn('Oops error!')
});
我认为我可以使用 Bluebird 协程来完成此任务?只是在决定最有意义/最符合我上面的例子的结构时遇到了麻烦。
【问题讨论】: