Sobes.tech
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(...);