Повтор промиса с задержкой (Retry Promise)

3

JavaScript

Асинхронность

Условие:

Напишите функцию retryPromise(fn, retries, delay), которая принимает:

  • fn — функцию без аргументов, возвращающую Promise

  • retries — количество дополнительных попыток при неудаче (не считая первой)

  • delay — задержка в миллисекундах между попытками

Функция должна вызывать fn. Если Promise разрешается — вернуть его результат. Если отклоняется — подождать delay миллисекунд и повторить вызов. Если все попытки исчерпаны, отклонить с последней ошибкой.

Входные данные:

  • fn: () => Promise<any>

  • retries: целое число >= 0

  • delay: число в миллисекундах >= 0

Выходные данные: Promise, который разрешается значением первого успешного вызова fn или отклоняется с ошибкой последней попытки.

Ограничения:

  • 0 <= retries <= 10

  • 0 <= delay <= 5000

  • fn всегда возвращает Promise

Пример:

Вход: fn — функция, которая падает 2 раза, потом успешно возвращает 42; retries = 3, delay = 100
Выход: Promise resolves → 42

Вход: fn — функция, которая всегда падает с ошибкой "fail"; retries = 2, delay = 50
Выход: Promise rejects → "fail"
Loading...