логотип 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(), которые требуют успешного выполнения всех промисов.

Стрелочка влевоМетод Promise.any() в JavaScriptМетод Promise.all() в JavaScriptСтрелочка вправо

Все гайды по Javascript

Как работает метод trim() - JavaScriptКак работает метод toUpperCase() - JavaScriptКак работает метод toLowerCase() - JavaScriptКак работает метод substring() - JavaScriptКак работает метод startsWith() - JavaScriptКак работает метод split() - JavaScriptКак работает метод slice() - JavaScriptКак работает метод search() - JavaScriptКак работает метод replaceAll() - JavaScriptКак работает метод replace() - JavaScriptКак работает метод repeat() - JavaScriptКак работает метод padStart() - JavaScriptКак работает метод padEnd() - JavaScriptКак работает метод matchAll() - JavaScriptКак работает метод match() - JavaScriptКак работает метод localeCompare() - JavaScriptКак работает свойство length - JavaScriptКак работает метод lastIndexOf() - JavaScriptКак работает метод indexOf() - JavaScriptКак работает метод includes() - JavaScriptКак работает метод fromCodePoint() - JavaScriptКак работает метод fromCharCode() - JavaScriptКак работает метод endsWith() - JavaScriptКак работает метод concat() - JavaScriptКак работает метод codePointAt() - JavaScriptКак работает метод charCodeAt() - JavaScriptКак работает метод charAt() - JavaScript
Итератор в JavaScript
try...catch в JavaScriptError в JavaScript
Событие wheel в JavaScriptСобытие unload в JavaScriptСобытие touch в JavaScriptСобытие submit в JavaScriptСобытие scroll в JavaScriptСобытие reset в JavaScriptМетод .preventDefault() в JavaScriptСобытие mouseover в JavaScriptСобытие mouseout в JavaScriptСобытие load в JavaScriptСобытие keyup в JavaScriptСобытие keydown в JavaScriptСобытие invalid в JavaScriptСобытие input в JavaScriptСобытийная модель Event в JavaScriptОбъект события Event в JavaScriptСобытие DOMContentLoaded в JavaScriptСобытие dblclick в JavaScriptСобытие click в JavaScriptСобытие change в JavaScriptСобытие beforeunload в JavaScript
Как работает метод some() - JavaScriptКак работает метод reverse() - JavaScriptКак работает метод reduce() - JavaScriptКак работает метод map() - JavaScriptКак работает метод isArray() - JavaScriptКак работает метод indexOf() - JavaScriptКак работает метод includes() - JavaScriptКак работает метод from() - JavaScriptКак работает метод forEach() - JavaScriptКак работает метод flatMap() - JavaScriptКак работает метод flat() - JavaScriptКак работает метод findIndex() - JavaScriptКак работает метод find() - JavaScriptКак работает метод filter() - JavaScriptКак работает метод every() - JavaScriptМассивы в JavaScript
Открыть базу знаний