В чем разница между Promise All и Allsetted

Ответ

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