Назад к вопросам
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); // Выполнится, если таймаут сработает первым
});