Реализуйте функцию, которая повторяет fetch-запрос несколько раз при неудаче. Что должно происходить после исчерпания попыток?

После исчерпания попыток функция должна завершиться ошибкой, а не зависнуть или вернуть undefined; правила повторов задаются явно.

Короткий ответ

Что ответить на собеседовании

После исчерпания попыток функция должна завершиться ошибкой, а не зависнуть или вернуть undefined; правила повторов задаются явно.

Подробный разбор

Ответ с пояснениями

После исчерпания попыток функция должна завершиться ошибкой, а не зависнуть или вернуть undefined; правила повторов задаются явно.

Для фабрики повторяемого запроса:

async function retryFetch(makeRequest, attempts) {
  if (!Number.isInteger(attempts) || attempts < 1) throw new RangeError('attempts');
  for (let i = 0; ; i++) {
    try { return await makeRequest(); }
    catch (error) {
      if (i + 1 === attempts || error?.name === 'AbortError') throw error;
    }
  }
}

Пример: retryFetch(() => fetch(url), 3). HTTP 500 не отклоняет fetch автоматически; отдельно определите retryable-статусы, backoff и безопасность повторения побочных эффектов.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее