前端大杂烩

仅执行一次函数

2022-05-26  本文已影响0人  lio_zero

仅执行一次函数的话,使用类似 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专题之惰性函数

上一篇 下一篇

猜你喜欢

热点阅读