如何实现after高阶函数,使其仅在指定调用次数后执行目标函数
JavaScript after高阶函数实现
我们需要实现的after是一个JavaScript高阶函数,接收两个入参:
- 调用次数阈值
count - 待执行的目标函数
funct
返回的新函数需要满足:只有调用次数达到count阈值后,才会执行传入的目标函数funct,调用时传入的参数和上下文都会原样透传给funct。
实现代码
function after(count, funct) { // 闭包存储实际调用次数 let invokeTimes = 0; return function (...args) { invokeTimes++; // 调用次数达到阈值后执行目标函数 if (invokeTimes >= count) { return funct.apply(this, args); } } }
效果测试
用示例代码验证运行结果符合预期:
var called = function () { console.log("hello"); }; var afterCalled = after(3, called); afterCalled(); // --> 无输出 afterCalled(); // --> 无输出 afterCalled(); // --> 打印 "hello"
如果你的业务需求是仅第count次调用时执行一次目标函数,后续调用不再执行,只需要将判断条件修改为invokeTimes === count即可。
内容的提问来源于stack exchange,提问作者Nizami Alimammadov
相关产品推荐
相关产品推荐

