Повтор промиса с задержкой (Retry Promise)
3
Асинхронность
Условие:
Напишите функцию retryPromise(fn, retries, delay), которая принимает:
fn— функцию без аргументов, возвращающую Promiseretries— количество дополнительных попыток при неудаче (не считая первой)delay— задержка в миллисекундах между попытками
Функция должна вызывать fn. Если Promise разрешается — вернуть его результат. Если отклоняется — подождать delay миллисекунд и повторить вызов. Если все попытки исчерпаны, отклонить с последней ошибкой.
Входные данные:
fn:() => Promise<any>retries: целое число>= 0delay: число в миллисекундах>= 0
Выходные данные: Promise, который разрешается значением первого успешного вызова fn или отклоняется с ошибкой последней попытки.
Ограничения:
0 <= retries <= 100 <= delay <= 5000fnвсегда возвращает Promise
Пример:
Вход: fn — функция, которая падает 2 раза, потом успешно возвращает 42; retries = 3, delay = 100
Выход: Promise resolves → 42
Вход: fn — функция, которая всегда падает с ошибкой "fail"; retries = 2, delay = 50
Выход: Promise rejects → "fail"