Sobes.tech
Middle+

withTimeout funksiyasını həyata keçirin, bu funksiya bir funksiya və vaxt (millisaniyə) qəbul edir və yeni funksiya qaytarır. Əgər orijinal funksiya müəyyən edilmiş vaxtda icra olunmazsa, vəd rədd edilməlidir.

sobes.tech Süni İntellekt

AI-dan cavab

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