логотип PurpleSchool
Иконка входа
Вход
  • Обучение
  • Войти
логотип PurpleSchool

Метод Promise.allSettled() в JavaScript

Автор

Дмитрий Нечаев

В современном программировании на JavaScript, особенно в асинхронном коде, часто возникает необходимость выполнять несколько операций параллельно. Для этого идеально подходит метод Promise.allSettled(). Этот метод позволяет запускать несколько промисов одновременно и ждать их всех завершения, независимо от того, были ли они выполнены успешно или завершились с ошибкой.

Что такое Promise.allSettled()?

Promise.allSettled() — это статический метод Promise, который принимает массив промисов и возвращает промис, который разрешается после того, как все переданные промисы завершились (разрешены или отклонены). Результатом этого промиса является массив объектов, каждый из которых представляет результат выполнения каждого из промисов.

Как работает Promise.allSettled()?

Каждый объект в возвращаемом массиве имеет два свойства:

  • status: строка, которая указывает, был ли промис выполнен ("fulfilled") или отклонен ("rejected").
  • value или reason: значение, с которым промис был выполнен, или причина, по которой он был отклонен.

Пример использования

Допустим, у нас есть несколько асинхронных операций, которые возвращают промисы. Мы хотим запустить их параллельно и обработать результаты, как только все они завершатся.

const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, 'ошибка'));
const promise3 = new Promise((resolve, reject) => setTimeout(resolve, 100, 'успешно'));

Promise.allSettled([promise1, promise2, promise3])
  .then((results) => {
    results.forEach((result) => {
      console.log(result.status); // Выведет "fulfilled", "rejected", "fulfilled"
    });
  });

Преимущества использования Promise.allSettled()

  1. Универсальность: Этот метод позволяет удобно обрабатывать ситуации, когда нам необходимо выполнить несколько асинхронных операций и нам важен результат каждой из них, даже если некоторые завершатся с ошибкой.
  2. Надежность: Мы получаем результаты всех промисов, что позволяет строить более надежную логику в обработке ошибок.

Недостатки

Основной недостаток использования Promise.allSettled() заключается в том, что придется ждать завершения всех промисов, даже если некоторые из них будут выполняться значительно дольше других.

Заключение

Promise.allSettled() является мощным инструментом в арсенале разработчика JavaScript для управления множественными асинхронными операциями. Он обеспечивает более гибкий подход к обработке ошибок и успешных результатов, чем другие аналогичные методы, такие как Promise.all(), которые требуют успешного выполнения всех промисов.

изображение курса

Основы JavaScript

Антон Ларичев
иконка часов18 часов лекций
иконка звёздочки рейтинга4.8
Frontend
Backend
Mobile
2 999 ₽
Основы JavaScript