В этом руководстве вы узнаете о методеPromise.allSettled() в JavaScript для создания промисов.
В ES2020 появился метод Promise.allSettled(), который принимает список промисов и возвращает новое обещание, которое разрешается после того, как все входные обещания будут выполнены, разрешены или отклонены.
Синтаксис:
Promise.allSettled(iterable);
iterable содержит обещания. Promise.allSettled() возвращает ожидающее обещание, которое будет асинхронно выполнено после того, как будет установлено каждое входное обещание.
Метод Promise.allSettled() возвращает обещание, которое преобразуется в массив объектов, каждый из которых описывает результат введенного промиса.
У каждого объекта есть два свойства: status и value(или reason ).
statusможет быть какfulfilled, так иrejected.value, если обещание выполнено, илиreason, если отклонено.
На следующей диаграмме показано, как работает метод Promise.allSettled() :
На этой диаграмме:
promise1отклоняется из-заerrorв момент времениt1.promise2разрешается в значение вt2.- Метод
Promise.allSettled()преобразуется в массив, содержащий объекты, описывающие статусы и результатыpromise1иpromise2.
Пример Promise.allSettled()
В следующем примере Promise.allSettled() используется для ожидания выполнения всех входных промисов:
const p1 = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('The first promise has resolved');
resolve(10);
}, 1 * 1000);
});
const p2 = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('The second promise has rejected');
reject(20);
}, 2 * 1000);
});
Promise.allSettled([p1, p2])
.then((result) => {
console.log(result);
});Выход:

Как это работает:
- Первое обещание
p1 преобразуется в значение10через одну секунду. - Второе обещание
p2отклоняется по причине со значением20через две секунды. Promise.allSettled()возвращает обещание, которое разрешается в массивresult, состоящий из двух элементов. Первый элемент — это объект, разрешенный обещаниемp1, а второй — другой объект, который отклонен обещаниемp2.
Метод Promise.allSettled() принимает итерацию промисов и возвращает новое обещание, которое разрешается, когда каждое входное обещание урегулировано с массивом объектов, который описывает результат каждого промиса в итерируемом объекте.
