Middle+
23
Реализовать функцию withTimeout, которая принимает функцию и время (миллисекунды) и возвращает новую функцию. Если исходная функция не выполнится за заданное время, промис должен быть отклонён.
Сұралған компаниялар
Яндекс
AI-дан жауап
sobes.tech AI
Функция withTimeout должна принимать функцию, которая возвращает промис, и время в миллисекундах. Она возвращает новую функцию, которая при вызове запускает исходную функцию и одновременно таймер. Если исходная функция не успевает завершиться за заданное время, промис отклоняется с ошибкой таймаута.
Пример реализации на JavaScript:
function withTimeout(fn, ms) {
return function(...args) {
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
reject(new Error('Timeout'));
}, ms);
fn(...args)
.then(result => {
clearTimeout(timer);
resolve(result);
})
.catch(err => {
clearTimeout(timer);
reject(err);
});
});
};
}
// Использование:
// const fetchWithTimeout = withTimeout(fetch, 5000);
// fetchWithTimeout('https://example.com').then(...).catch(...);