Колбэк в промис и повторы
Условие
asyncAuth(callback) вызывает callback(error, data). Реализуй auth(), возвращающую промис, и tryAuth(n), которая использует auth() и делает n дополнительных попыток при ошибке (то есть всего до n+1 вызовов).
Что проверяют тесты
успешная авторизация
ошибка отклоняет промис
tryAuth делает n дополнительных попыток
успех прекращает попытки
tryAuth(0) - одна попытка
Как подойти
Две части. Первая - превращение колбэка в промис, каноничная обёртка (её же делает util.promisify). Вторая - повторы, и здесь важна двусмысленность условия: «n дополнительных попыток» это n+1 вызовов, и это стоит проговорить вслух, а не угадывать. Типичная ошибка - сохранить промис в переменную и переиспользовать: промис одноразовый, повтор требует нового вызова auth().
Подсказки: 3
- Колбэк в стиле Node: первый аргумент - ошибка.
- n дополнительных попыток означает n+1 вызовов всего - уточни это у интервьюера.
- Каждая попытка создаёт новый промис: один и тот же промис переиспользовать нельзя.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.