Middle+
Implementujte funkciu withTimeout, ktorá prijíma funkciu a čas (milisekundy) a vracia novú funkciu. Ak sa pôvodná funkcia nevykoná v stanovenom čase, sľub by mal byť zamietnutý.
sobes.tech AI
Odpoveď od AI
Funkcia withTimeout by mala prijímať funkciu, ktorá vracia sľub, a čas v milisekundách. Vráti novú funkciu, ktorá pri volaní spustí pôvodnú funkciu a súčasne spustí časovač. Ak pôvodná funkcia nedokončí v stanovenom čase, sľub bude zamietnutý chybou timeout.
Príklad implementácie v JavaScripte:
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žitie:
// const fetchWithTimeout = withTimeout(fetch, 5000);
// fetchWithTimeout('https://example.com').then(...).catch(...);