Sobes.tech
Назад к вопросам
Middle
4

// Необходимо проверить решение задачи по двум сервисам, вызвав: // 1. checkResult(url1, solution) // 2. checkResult(url2, solution) // // checkResult: (url: string, solution: string | number) => Promise<boolean>; // // - Если оба запроса вернули true - вывести в console.log() success // - Если хоть один вернул false - вывести в console.log() fail // - Если хоть один не ответил - вывести в console.log() error // - Если хоть один отвечает дольше 1 сек - вывести в console.log() timeout

Компании, где спрашивали
Яндекс МаркетЯндекс Маркет

Ответ от нейросети

sobes.tech AI

Для решения задачи нужно параллельно вызвать checkResult для двух URL и обработать результаты с учетом таймаута и ошибок.

Пример на JavaScript с использованием Promise.race для таймаута:

async function verifySolution(url1, url2, solution) {
  const timeoutPromise = new Promise((_, reject) =>
    setTimeout(() => reject(new Error('timeout')), 1000)
  );

  try {
    const [res1, res2] = await Promise.all([
      Promise.race([checkResult(url1, solution), timeoutPromise]),
      Promise.race([checkResult(url2, solution), timeoutPromise])
    ]);

    if (res1 === true && res2 === true) {
      console.log('success');
    } else {
      console.log('fail');
    }
  } catch (error) {
    if (error.message === 'timeout') {
      console.log('timeout');
    } else {
      console.log('error');
    }
  }
}

Логика:

  • Если оба ответа true — выводим "success".
  • Если хоть один false — "fail".
  • Если хоть один промис отклоняется (например, ошибка сети) — "error".
  • Если хоть один промис не ответил за 1 секунду — "timeout".