Promise.race
Возвращает результат первого завершившегося промиса — успешного или нет.
Доступно с: ES2015
Синтаксис
Promise.race(promises)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| promises | Iterable | Массив промисов. |
Возвращаемое значение
PromiseПромис с результатом или ошибкой того, кто завершился первым.
Примеры
Ограничение времени ожидания:
const slow = new Promise((resolve) => setTimeout(() => resolve('data'), 500));
const timeout = new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), 100));
try {
console.log(await Promise.race([slow, timeout]));
} catch (error) {
console.log(error.message);
}Результат:
TimeoutПримечания
Проигравшие промисы не отменяются — они продолжают работу, просто их результат никому не нужен. Для отмены запросов используйте AbortController.
См. также
- Promise.any — Возвращает первый успешный результат, ошибки пропускает.
- Promise.all — Ждёт выполнения всех промисов параллельно.
- setTimeout — Выполняет функцию один раз через заданное время.
Вопросы и ответы по теме
В учебнике
- Несколько промисов сразу — Promise.all, Promise.allSettled, Promise.race и Promise.any в JavaScript: как ждать несколько асинхронных действий одновременно.