Sobes.tech
Middle+

Valósítsa meg a withTimeout függvényt, amely egy függvényt és egy időt (milliszekundum) fogad, és egy új függvényt ad vissza. Ha az eredeti függvény nem fut le a megadott időn belül, a promise-t el kell utasítani.

sobes.tech MI

Válasz az MI-től

A withTimeout függvénynek egy olyan függvényt kell elfogadnia, amely ígéreteket ad vissza, valamint egy időtartamot millisekundumban. Új függvényt ad vissza, amelyet meghívva, az eredeti függvényt futtatja és egyidejűleg elindít egy időzítőt. Ha az eredeti függvény a megadott időn belül nem fejeződik be, az ígéret elutasításra kerül egy időtúllépési hibával.

JavaScript példakód:

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);
        });
    });
  };
}

// Használat:
// const fetchWithTimeout = withTimeout(fetch, 5000);
// fetchWithTimeout('https://example.com').then(...).catch(...);