Promise.allSettled()
Метод allSettled() — это один из статических методов объекта Promise. Его используют, когда нужно запустить несколько промисов параллельно и дождаться их выполнения.
Promise.allSettled() очень похож на метод Promise.all(), но работает немного по-другому. В отличие от Promise.all(), Promise.allSettled() ждёт выполнения всех промисов, при этом неважно, завершились они успешно или с ошибкой.
Создадим массив промисов и передадим его в Promise.allSettled(). Один из созданных промисов завершится ошибкой:
const promises = [
new Promise(resolve => setTimeout(() => resolve(1), 3000)),
new Promise((resolve, reject) => setTimeout(() => reject('error'), 2000)),
new Promise(resolve => setTimeout(() => resolve(3), 1000))
]
Promise.allSettled(promises)
.then(([response1, response2, response3]) => {
console.log(response1)
// { status: 'fulfilled', value: 3 }
console.log(response2)
// { status: 'rejected', reason: 'error' }
console.log(response3)
// { status: 'fulfilled', value: 1 }
})
Если промис выполнился успешно, то на выходе получаем объект с двумя свойствами — status и value. status будет содержать строку 'fulfilled', а value — значение, которое передали при вызове resolve у промиса:
{ status: 'fulfilled', value: значение }
Если промис выполнился с отказом, то на выходе получаем объект с двумя свойствами — status и reason. status будет содержать строку 'rejected', а reason — значение, которое передали при вызове reject у промиса:
{ status: 'rejected', reason: значение }
👉 @seniorFront