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