логотип PurpleSchool
логотип PurpleSchool

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

Автор

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

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

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

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

Синтаксис

Promise.all(iterable)

где iterable — это итерируемый объект, такой как массив, содержащий промисы.

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

// Создаем несколько промисов
let promise1 = Promise.resolve(3);
let promise2 = 42;
let promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

// Используем Promise.all для обработки всех промисов
Promise.all([promise1, promise2, promise3]).then(values => {
  console.log(values); // [3, 42, "foo"]
});

В этом примере, несмотря на то, что promise2 не является промисом, он обрабатывается как успешно разрешенный промис.

Обработка ошибок в Promise.all()

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

Пример с ошибкой

let promise1 = Promise.resolve(3);
let promise2 = new Promise((resolve, reject) => {
  setTimeout(reject, 100, 'Ошибка');
});

Promise.all([promise1, promise2])
  .then(values => {
    console.log(values);
  })
  .catch(error => {
    console.error(error); // "Ошибка"
  });

В этом примере, если promise2 отклоняется, обработчик catch будет вызван с соответствующей ошибкой.

Заключение

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

Стрелочка влевоМетод Promise.allSettled() в JavaScriptPromise в 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
Открыть базу знаний