美文网首页前端大杂烩
仅执行一次函数

仅执行一次函数

作者: lio_zero | 来源:发表于2022-05-26 18:01 被阅读0次

仅执行一次函数的话,使用类似 Lodash 库的 _.once(func) 方法是最简单的。

但如果你不想使用库,想要自己实现一个简单的话,可以利用闭包:

const once = (fn) => {
  let result

  return function () {
    if (fn) {
      result = func.apply(this, arguments)
      fn = null
    }

    return result
  }
}

let n = 0
const initialize = once(() => ++n)

initialize() // n = 1
initialize() // n = 1
initialize() // n = 1

当您将函数作为参数传递给此 once 方法(作为参数 fn)时,它将返回一个只能调用一次的函数。

简而言之,它通过创建一个 result 变量并将调用函数的结果与其提供的参数赋值给该变量来完成这一功能,但这只是在函数第一次运行时。在后续调用函数时,它将永远不会执行 if 语句(因为 fn 变量在第一次调用时设置为 null),并且将返回 result 变量引用的值(在第一次调用期间设置并通过闭包访问)。

更多资料

JavaScript专题之惰性函数

相关文章

  • 仅执行一次函数

    仅执行一次函数的话,使用类似 Lodash 库的 _.once(func)[https://lodash.com/...

  • 防抖与节流

    // 非立即执行版,及n秒内时间执行一次函数, 如果n秒又触发了事件,则会重新计算时间 // 立即执行版,触发事件...

  • 内存释放和作用域销毁

    //每一次函数执行都会开辟一个新的内存空间,供代码执行(局部作用域) //堆内存释放 var obj1={"你好"...

  • 2019-04-11

    二次函数 一:二次函数是一次函数加一次函数吗? 假设二次函数等于一次函数加一次函数...

  • JS基础(5)

    1、定时器 开定时器:setInterval(函数名,时间); 每隔一段时间执行一次函数,会连续不断执行过多长时间...

  • 防抖与节流

    防抖:事件持续触发,但只有当事件停止触发后n秒才执行函数。 节流:事件持续触发时,每n秒执行一次函数。 防抖 节流

  • 节流和防抖

    节流概念(Throttle) 按照设定的时间固定执行一次函数,设定一个时间,在这个时间内只执行一次,不到时间会返回...

  • 防抖和节流

    防抖(只执行最后一次):动作停止后的时间超过设定的时间时执行一次函数。注意:这里的动作停止表示你停止了触发这个函数...

  • Go语言——sync.Once分析

    Go语言——sync.Once分析 sync.Once表示只执行一次函数。要做到这点,就需要两点: 计数器,统计函...

  • [性能优化]面试常考篇

    节流 节流顾名思义则是将减少一段时间内触发的频率。节流会稀释你的执行频率,比如每间隔1秒钟,只会执行一次函数,无论...

网友评论

    本文标题:仅执行一次函数

    本文链接:https://www.haomeiwen.com/subject/sfoxaltx.html