Задача · Асинхронность · урок 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 больше не вызывается.
Не добавляйте лишних импортов, если в задаче это прямо не сказано.
Подпишись, чтобы пройти курс
Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.