У меня есть две асинхронные функции, которые создают обещания.Обе функции используют один и тот же ввод i
.
async function1(i) {}
async function2(i) {}
Я буду вызывать эти функции несколько раз с разными значениями для своего ввода, и я хочу сделать свой код максимально эффективным, поэтому я хочупоставьте в очередь обещания и сделайте так, чтобы они выполнялись параллельно, используя Promise.all()
.
. Тем не менее, я хочу получить один результат в качестве окончательного результата, который будет представлять собой массив объектов, таких как:
[
{
input: i,
result1: result1,
result2: result2
},
...
]
Я выполнил это в два отдельных шага:
async function function1(i) {
return i * i
}
async function function2(i) {
return i * i * i
}
async function main() {
var promises = []
for (let i = 0; i < 10; i++) {
let promise = function1(i)
.then(function(result1) {
return {i:i, result1:result1}
});
promises.push(promise)
}
var final = await Promise.all(promises)
var promises2 = [];
for (let i = 0; i < 10; i++) {
let promise = function2(i)
.then (function(result2) {
final[i]['result2'] = result2;
});
promises2.push(promise);
}
await Promise.all(promises2)
console.log(final)
}
main()
Тем не менее, я чувствую, что это можно сделать с помощью одного Promise.all()
.Можете ли вы сказать мне, как?