Sobes.tech
Middle

Ստեղծեք ֆունկցիա, որը մերժում է վերադարձվող խոստումը, փոխանցելով որպես սխալ տող "timeout_error", եթե այն չի լուծվում նշված ժամանակում կամ նորմալ կերպով պահում է որպես սկզբնական: @param {Promise} promise Արդյունք խոստում @param {Number} timeoutMilliseconds Ժամանակը համար timeout միլիսեկունդներում @return {Promise} Կախված ցանկալի վարքագծից function withTimeout(promise, timeout) { return new Promise((res, rej) => { const timeoutId = setTimeout(() => { rej("timeout_error") }) }) }

sobes.tech AI

Պատասխան AI-ից

Функция должна создавать два конкурентных промиса: исходный и таймаут, который через заданное время отклоняется с ошибкой "timeout_error". Затем возвращается промис, который резолвится или реджектится первым из них.

function withTimeout(promise, timeoutMilliseconds) {
  return new Promise((resolve, reject) => {
    const timeoutId = setTimeout(() => {
      reject("timeout_error");
    }, timeoutMilliseconds);

    promise.then(
      (value) => {
        clearTimeout(timeoutId);
        resolve(value);
      },
      (error) => {
        clearTimeout(timeoutId);
        reject(error);
      }
    );
  });
}

Такой подход гарантирует, что если исходный промис не успеет завершиться за timeout, будет отклонён с ошибкой "timeout_error". Если же он завершится раньше, таймаут отменяется.