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

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

Основы JavaScript

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