Назад к вопросам
Junior
94
questionbank
Объясните, что такое Promise.race и как он используется в JavaScript.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Promise.race принимает итерируемый объект промисов и возвращает новый промис. Этот новый промис разрешается или отклоняется, как только первый промис в итерируемом объекте разрешается или отклоняется. Результатом нового промиса будет результат или причина отклонения первого завершившегося промиса.
Используется для:
- Выбора самого быстрого ответа из нескольких асинхронных операций.
- Реализации таймаутов для асинхронных операций.
Пример таймаута:
// Функция, которая создает промис, отклоняющийся через определенное время
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error(`Timeout after ${ms}ms`));
}, ms);
});
}
// Асинхронная операция, которая может быть медленной
function fetchData() {
return new Promise(resolve => {
// Имитация длительной операции
setTimeout(() => {
resolve('Data fetched successfully');
}, 2000); // Предположим, эта операция занимает 2 секунды
});
}
// Использование Promise.race для добавления таймаута к fetchData
Promise.race([
fetchData(), // Наша операция
timeout(1000) // Таймаут в 1 секунду
])
.then(result => {
console.log(result); // Выполнится, если fetchData завершится до таймаута
})
.catch(error => {
console.error(error.message); // Выполнится, если таймаут сработает первым
});