Ответ
Promise.all и Promise.allSettled оба работают с массивом промисов, но ведут себя по-разному при обработке ошибок.
- Promise.all:
Возвращает массив результатов, если все промисы успешно выполняются. Если хотя бы один промис отклоняется, весьPromise.allнемедленно отклоняется с этой ошибкой.
Пример:
Promise.all([promise1, promise2])
.then(results => console.log(results))
.catch(error => console.error(error)); // Прервётся при первой ошибке
- Promise.allSettled:
Дожидается завершения всех промисов (независимо от успеха/ошибки) и возвращает массив объектов с статусом и значением/причиной.
Пример:
Promise.allSettled([promise1, promise2])
.then(results => results.forEach(result => {
if (result.status === 'fulfilled') console.log(result.value);
else console.error(result.reason);
}));
Итог:
all— "всё или ничего".allSettled— "дождаться всех".