You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:39:04