Встречается на собеседованиях • сегодня
Как ограничить время выполнения бесконечного 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 или другие механизмы.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы