Функциональный JavaScriptФункции-декораторыmedium

Декоратор с ограничением вызовов

Реализуйте функцию-декоратор 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