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
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.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.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.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; }));
});

Какой вариант использовать?
Выбор:
- all: нужны все результаты; немедленно завершайтесь при любой ошибке.
- any: примите первый успех, например при использовании запасных источников.
- race: выберите первый завершившийся результат, например в шаблонах с ограничением времени ожидания.
- allSettled: соберите каждый исход для анализа.

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

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

Часто задаваемые вопросы
Урок «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 — локальная установка не требуется.
Все уроки этого курса
- Цикл событий и основы задач и микрозадач
- Промисы — состояния, цепочки и обработка ошибок
- Promise.all / any / race / allSettled — выбираем подходящий инструмент