Запускайте aus последовательно в цикле, возвращая первый успешный результат. После n неудач выбрасывайте последнюю ошибку; n должно быть положительным целым.
Напишите функцию tries(n), которая вызывает функцию aus до n раз: возвращает первый успешный результат, а если все попытки завершились ошибкой — выбрасывает ошибку последней попытки.
Запускайте aus последовательно в цикле, возвращая первый успешный результат. После n неудач выбрасывайте последнюю ошибку; n должно быть положительным целым.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Запускайте aus последовательно в цикле, возвращая первый успешный результат. После n неудач выбрасывайте последнюю ошибку; n должно быть положительным целым.
Вариант для синхронной или асинхронной aus:
async function tries(n) {
if (!Number.isInteger(n) || n < 1) throw new RangeError('n >= 1');
for (let attempt = 1; attempt <= n; attempt++) {
try {
return await aus();
} catch (error) {
if (attempt === n) throw error;
}
}
}
Здесь n — общее число попыток, а не дополнительных повторов. await нужен, чтобы catch перехватил отклонение Promise. Для реальных операций отдельно задают задержки и безопасность повторения.