Sobes.tech
Middle+

Implementar la función withTimeout, que toma una función y un tiempo (milisegundos) y devuelve una nueva función. Si la función original no se ejecuta en el tiempo establecido, la promesa debe ser rechazada.

sobes.tech AI

Respuesta de la IA

Функция 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(...);