【发布时间】:2019-01-03 16:41:23
【问题描述】:
我想要一些关于传递数据以及一系列承诺的好方法的指导,以便在调用 await Promise.all() 之后可以使用数据。
我对 node 和 promises 还是很陌生。总之,下面的代码可以满足我的要求,但是将promises array 与相应的data array 分开似乎很混乱。我认为这是一种常见的情况,并且会有一个更简单的解决方案。
我可以通过将then() 函数附加到asyncFunc return 来实现相同的结果,但这会使代码更加混乱,并且由于某种原因需要两倍的时间来执行。
async function foo(inputs) {
var promises = [];
var datas = [];
for (var input of inputs.values()) {
promises.push(asyncFunc(input.a));
datas.push(input.b);
}
var outputs = [];
for (let result of (await Promise.all(promises)).values()) {
outputs.push({
data: datas.shift(),
result: result
});
}
return outputs;
}
【问题讨论】:
-
(await Promise.all(promises)).map((result, i) => ({ data: datas[i], result })
标签: node.js promise async-await