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

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

Автор

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

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

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

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

Метод Promise.all() играет ключевую роль в асинхронном JavaScript, позволяя дождаться выполнения всех промисов в массиве и получить массив результатов. Понимание нюансов его работы необходимо для эффективной обработки параллельных операций. Чтобы глубже разобраться в Promise и других аспектах асинхронности, рекомендуем наш курс. Если вы хотите детальнее погрузиться в JavaScript — приходите на наш большой курс JavaScript Advanced. На курсе 196 уроков и 18 упражнений, AI-тренажеры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.

Синтаксис

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.all() требует понимания обработки ошибок, конкурентности и других тонкостей асинхронного JavaScript. Эти знания помогут вам создавать более надежные и производительные приложения. Узнайте больше на курсе JavaScript Advanced. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир продвинутого JavaScript прямо сегодня.

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

Постройте личный план изучения Javascript до уровня Middle — бесплатно!

Javascript — часть карты развития Frontend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по 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
Открыть базу знаний

Лучшие курсы по теме

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

Основы JavaScript

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

TypeScript с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.7
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Next.js - с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.7
3 999 ₽ 6 990 ₽
Подробнее

Отправить комментарий