Перейти к содержимому
Задача · Асинхронность · урок 9 из 12

Задача: повторить асинхронную задачу

Напишите функцию async function retry(fn, times). Она вызывает fn() — функцию без аргументов, которая возвращает промис, — и возвращает значение этого промиса. Если промис отклонён, retry вызывает fn() снова, всего не больше times раз. Если отклонены все вызовы, промис из retry отклоняется с ошибкой последнего вызова.

В тестах flaky(n, value).fn — такая функция: её первые n вызовов отклоняются с ошибками fail 1, fail 2 и так далее, а следующие выполняются со значением value.

  • retry(flaky(0, "ok").fn, 3) → "ok"
  • retry(flaky(2, "late").fn, 3) → "late"
  • retry(flaky(3, "never").fn, 3) → отказ с ошибкой fail 3

Ограничения: times — целое число от 1 до 5; после первого успешного вызова fn больше не вызывается.

Не добавляйте лишних импортов, если в задаче это прямо не сказано.

retry.js — javascript
javascript · строк: 4
Ctrl+Enter запуск · Esc выйти из редактора

Подпишись, чтобы пройти курс

Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.

Войти другим способом