Код Middle Тестирование обновлено
Повтор запроса с экспоненциальной задержкой
Условие
Напишите retry(fn, { retries, baseMs }): вызывает асинхронную fn(attempt) (номер попытки с 0). При ошибке ждёт baseMs * 2 ** attempt мс и пробует снова, всего не больше retries + 1 попыток. Если ошибка имеет err.retryable === false, сразу пробрасывает её без повторов. Если все попытки неудачны, пробрасывает последнюю ошибку. Возвращает результат первой успешной попытки.
Что проверяют тесты
успех с первой попытки
успех после двух ошибок
все попытки неудачны
retries 0 значит одна попытка
неповторяемая ошибка сразу
экспоненциальные задержки
нет паузы после последней попытки
Как подойти
Подсказки: 2
- Цикл по
attemptот 0 доretriesвключительно. - Ждите только между попытками, после последней сразу пробрасывайте ошибку.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.