Sobes.tech
Middle+

Implementieren Sie die Funktion withTimeout, die eine Funktion und eine Zeit (Millisekunden) akzeptiert und eine neue Funktion zurückgibt. Wenn die ursprüngliche Funktion nicht innerhalb der festgelegten Zeit ausgeführt wird, soll das Versprechen abgelehnt werden.

sobes.tech KI

Antwort von 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(...);