Ответ
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— "дождаться всех".