Встречается на собеседованиях • сегодня

Можно ли ограничить время выполнения бесконечного Promise через Promise.race

Да, можно использовать Promise.race для ограничения времени выполнения Promise. Передаем в Promise.race два промиса: исходный и таймаутный, который завершится через заданное время.

javascript
function withTimeout(promise, timeout) {
  const timeoutPromise = new Promise((_, reject) => {
    setTimeout(() => reject(new Error('Timeout exceeded')), timeout);
  });
  return Promise.race([promise, timeoutPromise]);
}

// Пример использования
const longRunningTask = new Promise(resolve => {
setTimeout(() => resolve('Done'), 5000); // Завершится через 5 сек
});

withTimeout(longRunningTask, 2000) // Таймаут 2 сек
.then(console.log)
.catch(err => console.error(err.message)); // Выведет "Timeout exceeded"

text

Важно: исходный Promise продолжит выполняться в фоне, даже после таймаута. Для полной отмены нужно использовать AbortController или другие механизмы.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы