Я думаю, что ваш вопрос довольно ясен без кучки кода. Важно понимать, что .then()
возвращает обещание. Это означает, что вы можете выполнять работу, когда отдельное обещание разрешается, вызывая then()
и сохраняя возвращаемое значение из then()
, которое также является обещанием в массиве. Вы передадите этот массив в Promise.all()
, который разрешится после разрешения всех посылок в массиве:
/* some async function */
let asyncFn = () => new Promise(resolve => setTimeout(() => resolve(Math.random()), Math.floor(Math.random() * 1500)))
let promises = []
for (let i = 0; i < 10; i++) {
let p = asyncFn() // then() returns a promise, save it in the array:
.then((r) => { // do work for each promise
console.log('done:', i, "returned: ", r)
return r // Promise.all() will received these values as an array
})
promises.push(p) // promises is array of promises
}
// Promise.all() runs when all promises in array have resolved
Promise.all(promises)
.then((arr) => console.log("Everything finished. Final values: ", arr))