Здравствуйте, коллеги.
Помогите решить задачу, суть следующая...
Функция getRepeatableData должна вызывать getData и обрабатывать ошибки по условию:
Если вызов getData возвращает ошибку NotFoundError, то мы пробрасываем исключение.
Если вызов getData возвращает ошибку TemporaryError, то мы должны делать повторный вызов getData функции. Кол-во таких вызовов не должно превышать значение maxRequestsNumber. Если кол-во повторного вызова превышает maxRequestsNumber, то функция getRepeatableData должна пробрасывать ошибку AttemtsLimitExceeded.
Если getData выполняется без ошибок - функция должна вернуть то, что вернула getData
Пример:
const getData = (key) => 'hello' + key;
const res = getRepeatableData(getData, '1', 3); // 'hello1'
Повторный вызов функции можно сделать циклом где i будет <= maxRequestNumber. Но таким образом она не сможет превышать, а по заданию она может превышать)
Вот код:
class AttemptsLimitExceeded extends Error {
constructor() {
super('Max attempts limit exceed');
this.name = 'AttemptsLimitExceeded';
}
}
class NotFoundError extends Error {
constructor() {
super('Not found');
this.name = 'NotFoundError';
}
}
class TemporaryError extends Error {
constructor() {
super('TemporaryError');
this.name = 'TemporaryError';
}
}
const getData = (key) => new TemporaryError();
function getRepeatableData(getData, key, maxRequestsNumber = Infinity) {
try {
} catch (e) {
}
return getData(key);
}
getRepeatableData(getData, '1', 3);