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

仅执行一次函数

作者: 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专题之惰性函数

    相关文章

      网友评论

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

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