Напишите функцию tries(n), которая вызывает функцию aus до n раз: возвращает первый успешный результат, а если все попытки завершились ошибкой — выбрасывает ошибку последней попытки.

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

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

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

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

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

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

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

Вариант для синхронной или асинхронной aus:

async function tries(n) {
  if (!Number.isInteger(n) || n < 1) throw new RangeError('n >= 1');
  for (let attempt = 1; attempt <= n; attempt++) {
    try {
      return await aus();
    } catch (error) {
      if (attempt === n) throw error;
    }
  }
}

Здесь n — общее число попыток, а не дополнительных повторов. await нужен, чтобы catch перехватил отклонение Promise. Для реальных операций отдельно задают задержки и безопасность повторения.

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

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

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

Подробнее