0Pricing
JavaScript Academy · Урок

Promise.all / any / race / allSettled — выбираем подходящий инструмент

Попрактикуйтесь с комбинаторами промисов: all, any, race и allSettled. Узнайте, как они ведут себя при успехе и ошибке и когда использовать каждый из них

«Promise.all / any / race / allSettled — выбираем подходящий инструмент» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 3 уроков всего.

Обзор средств объединения

Цель: изучить четыре вспомогательных средства и их поведение.

  • all: ждать все результаты; немедленно завершаться при ошибке
  • any: первый успех
  • race: первый завершившийся результат — успешный или ошибочный
  • allSettled: результаты для всех
Promise.all / any / race / allSettled — выбираем подходящий инструмент — иллюстрация 1

Основы Promise.all

Promise.all разрешается массивом результатов; одного отклонения достаточно, чтобы отклонить весь результат.

// Small helpers for examples
function delay(ms, value, shouldFail = false) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      if (shouldFail) reject(new Error(String(value)));
      else resolve(value);
    }, ms);
  });
}

// Promise.all waits for all; rejects fast on first error
Promise.all([
  delay(10, "A"),
  delay(5, "B")
]).then(function (vals) {
  console.log("all:", vals);
});
Promise.all / any / race / allSettled — выбираем подходящий инструмент — иллюстрация 2

Основы Promise.any

Promise.any разрешается при первом успехе и отклоняется, только если отклонены все входные значения.

// Promise.any gives the first fulfilled value
Promise.any([
  delay(8, "ok-1"),
  delay(3, "ok-2"),
  delay(6, "ok-3")
]).then(function (v) {
  console.log("any:", v);
}).catch(function (e) {
  console.log("any failed:", e.message);
});
Promise.all / any / race / allSettled — выбираем подходящий инструмент — иллюстрация 3

Основы Promise.race

Promise.race выбирает тот результат, который завершится первым: это может быть разрешение или отклонение.

// Promise.race settles with the first to finish (success or error)
Promise.race([
  delay(5, "win"),
  delay(7, "boom", true)
]).then(function (v) {
  console.log("race resolved:", v);
}).catch(function (e) {
  console.log("race rejected:", e.message);
});
Promise.all / any / race / allSettled — выбираем подходящий инструмент — иллюстрация 4

Основы Promise.allSettled

Promise.allSettled всегда разрешается массивом объектов состояния для каждого входного значения.

// Promise.allSettled waits for all and reports each outcome
Promise.allSettled([
  delay(4, "A"),
  delay(6, "X", true)
]).then(function (results) {
  console.log("allSettled:", results.map(function (r) { return r.status; }));
});
Promise.all / any / race / allSettled — выбираем подходящий инструмент — иллюстрация 5

Какой вариант использовать?

Выбор:

  • all: нужны все результаты; немедленно завершайтесь при любой ошибке.
  • any: примите первый успех, например при использовании запасных источников.
  • race: выберите первый завершившийся результат, например в шаблонах с ограничением времени ожидания.
  • allSettled: соберите каждый исход для анализа.
Promise.all / any / race / allSettled — выбираем подходящий инструмент — иллюстрация 6

Проверка выбора средства объединения

Быстрая проверка: первый выполненный результат.

Promise.all / any / race / allSettled — выбираем подходящий инструмент — иллюстрация 7

Повторение

Повторение: используйте all, когда «нужны все», any — для «первого успеха», race — для «первого завершившегося результата», а allSettled — чтобы изучить каждый исход без досрочного завершения.

Promise.all / any / race / allSettled — выбираем подходящий инструмент — иллюстрация 8

Часто задаваемые вопросы

Урок «Promise.all / any / race / allSettled — выбираем подходящий инструмент» бесплатный?

Да — полный текст урока «Promise.all / any / race / allSettled — выбираем подходящий инструмент» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 3 уроков всего.

Чему я научусь в уроке «Promise.all / any / race / allSettled — выбираем подходящий инструмент»?

Попрактикуйтесь с комбинаторами промисов: all, any, race и allSettled. Узнайте, как они ведут себя при успехе и ошибке и когда использовать каждый из них Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать JavaScript Academy?

Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.

Сколько времени занимает урок «Promise.all / any / race / allSettled — выбираем подходящий инструмент»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке JavaScript Academy?

Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Цикл событий и основы задач и микрозадач
  2. Промисы — состояния, цепочки и обработка ошибок
  3. Promise.all / any / race / allSettled — выбираем подходящий инструмент
← Назад к JavaScript Academy