Middle+
Implementujte funkci withTimeout, která přijímá funkci a čas (milisekundy) a vrací novou funkci. Pokud původní funkce nebude provedena během stanoveného času, slib by měl být zamítnut.
sobes.tech AI
Odpověď od AI
Funkce withTimeout by měla přijímat funkci, která vrací promise, a čas v milisekundách. Vrací novou funkci, která při volání spustí původní funkci a současně spustí časovač. Pokud původní funkce nedokončí v daném čase, promise bude odmítnuto chybou timeout.
Příklad implementace v JavaScriptu:
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);
});
});
};
}
// Použití:
// const fetchWithTimeout = withTimeout(fetch, 5000);
// fetchWithTimeout('https://example.com').then(...).catch(...);