Реализуйте функцию-декоратор withCallLimit
, которая ограничивает максимальное количество вызовов фунции.
Принимает два аргумента:
fn
— функция с произвольным количеством арзументов;limit
— максиальное количество вызовов функции fn
;callback
опциональный (необязательный аргумент), вызывается, когда совершается последний вызов.Функция, возвращаемая из withCallLimit
, должна поддерживать метод reset
, который позволяет сбросить счетчик доступных вызовов к исходному значению limit
.
function sum(a, b) { return a + b; } const sum3 = withCallLimit(repeat, 3, () => console.log("hello!")); console.log(sum3(2, 5)); // 7 console.log(sum3(20, 5)); // 25 console.log(sum3(10, 30)); // 40, выводится "hello" console.log(sum3(7, 8)); // undefined console.log(sum3(8, 9)); // undefined sum3.reset(); console.log(sum3(15, 17)); // 32