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

如何实现可限制callback回调函数执行次数的limitedFunction函数?

限制回调执行次数的limitedFunction实现

核心原理

利用JavaScript的闭包特性存储允许的剩余执行次数,每次调用返回的新函数时先校验剩余次数,次数未耗尽则执行回调并扣除次数,否则直接返回超限提示。

适配你给出的调用场景的实现代码

function limitedFunction(maxExecTime, cb) {
  // 闭包变量,记录剩余可执行次数,外部无法直接修改
  let remainingExecCount = maxExecTime
  return function (argsArray) {
    if (remainingExecCount > 0) {
      remainingExecCount--
      // 展开传入的数组参数,传入回调执行
      return cb(...argsArray)
    }
    return 'over limit'
  }
}

测试验证

let fn = limitedFunction(3, (a,b,c)=>a+b+c)
fn([1,2,3]) // 输出 6
fn([1,2,3]) // 输出 6
fn([1,2,3]) // 输出 6
fn([1,2,3]) // 输出 over limit
fn([1,2,3]) // 输出 over limit

通用场景扩展

如果需要支持直接传入多参数(如fn(1,2,3)而非传入数组),可以调整为以下通用写法:

function limitedFunction(maxExecTime, cb) {
  let remainingExecCount = maxExecTime
  // 接收任意数量的入参
  return function (...args) {
    if (remainingExecCount > 0) {
      remainingExecCount--
      return cb(...args)
    }
    return 'over limit'
  }
}

内容的提问来源于stack exchange,提问作者Lilly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:45:04