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

Как ограничить время выполнения бесконечного Promise

Используйте Promise.race() для соревнования между исходным промисом и таймаутом. Таймаут можно создать с помощью setTimeout, который отклоняет промис через заданное время.

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 => {
// Бесконечная операция
});

withTimeout(longRunningTask, 5000)
.then(console.log)
.catch(err => console.error(err.message)); // 'Timeout exceeded' через 5 сек

text

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

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

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

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