我想要一些有关将数据与诺言数组一起传递的好方法的指导,以便以后调用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;
}
答案 0 :(得分:0)
您经常会在nodeJs中遇到这种问题,答案是您希望异步函数如何反应。
async function foo(inputs) {
const results = [];
const datas = [];
for (const input of inputs.values()) {
const result = await asyncFunc(input.a);
results.push(result);
datas.push(input.b);
}
const outputs = [];
for (const result of results) {
outputs.push({
data: datas.shift(),
result: result
});
}
return outputs;
}
const results = await Promise.all(promises)).values();
for (const result of results) {
outputs.push({
data: datas.shift(),
result: result
});
}