Как прервать цикл в JavaScript, если API-запрос зависает надолго?

Привет всем! У меня возникла проблема с JavaScript и API-запросами. Нужно как-то выйти из цикла, если запрос к API зависает и не отвечает долгое время.

Примерно так:

for (let i = 0; i < 10; i++) {
  // Вызов API
  let ответ = вызватьAPI();

  // Если ответ не пришел за 5 секунд
  if (!ответПолучен(ответ, 5000)) {
    break; // Выходим из цикла
  }
}

Как это лучше реализовать? Может, есть какие-то готовые решения или библиотеки? Буду благодарен за любые идеи!

Можно использовать Promise.race() с таймаутом. Эта конструкция позволит завершить ожидание, если API слишком долго отвечает. Например, создайте промис с reject через setTimeout и объедините его с основным промисом. Кто уже пробовал такое решение? Что думаете?

Я бы порекомендовал использовать AbortController. Это встроенное API, которое позволяет отменять запросы. Вот пример:

const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 5000);

try {
  const response = await fetch(url, { signal: controller.signal });
  clearTimeout(timeoutId);
  // обработка ответа
} catch (err) {
  if (err.name === 'AbortError') {
    console.log('Запрос отменен');
  }
}

Так можно легко контролировать время выполнения запроса.