Новая фича — это дополнение к уже существующему
Promise.all(). Если all() прекращает работу как только любой из промисов возвращает reject, то allSettled() дожидается выполнения всех промисов и возвращает массив снапшотов состояния с результатами работы промисов вне зависимости от того были ли среди них промисы с reject.В рамках текущего стандарта можно обработать все промисы подобно
allSettled, если сделать дополнительную функцию (+обратите внимание на promises.map(reflect)):function reflect(promise) {
return promise.then(
v => ({status: 'fulfilled', value: v }),
error => ({status: 'rejected', reason: error})
);
}
const promises = [fetch('good.html'), fetch('bad.html')];
const results = await Promise.all(promises.map(reflect));
const successfulPromises = results.filter(
p => p.status === 'fulfilled'
);С использованием allSettled этот код становится гораздо проще:
co
nst promises = [fetch('good.html'), fetch('bad.html')];
const results = await Promise.allSettled(promises);
const successfulPromises = results.filter(
p => p.status === 'fulfilled'
);
Promise.allSettled() находится в stage 3. Это значит, что скорее всего он попадёт в стандарт либо в этом, либо в следующем году.#js #proposal #async
https://github.com/tc39/proposal-promise-allSettled