背景:应用页面有些函数方法只需要调用一次

方案:闭包变量控制函数执行

应用:初始化操作、异步请求、异步请求、单例模式等

    var once = function(fn) {
        let used = false
        return function (...args) {
            if (!used) {
                used = true
                return fn(...args)
            }
        }
    };
    //或者
    var once = function(fn) {
        return function(...args){
            try{
                return fn(...args)
            }
            finally{
                fn=()=>{}
            }
        }
    };

    function greet(name) {
      console.log(`Hello, ${name}!`);
    }

    const greetOnce = once(greet);

    greetOnce('Alice'); // Hello, Alice!
    greetOnce('Bob'); // undefined

应用

  1. 初始化操作:某些初始化操作只需要在应用程序启动时执行一次,例如设置全局配置、注册事件监听器或加载资源等。使用函数只能执行一次的封装,可以确保这些初始化操作只会在应用程序启动时执行一次。
  2. 事件绑定:在 JavaScript 中,我们经常需要将事件处理程序绑定到 DOM 元素的事件上。如果希望确保事件处理程序只被绑定一次,以避免重复触发问题,可以使用函数只能执行一次的封装来实现。
  3. 异步请求:在进行异步请求时,有时只需要在第一次请求时执行一些特定逻辑,例如发送统计信息、记录请求日志等。通过使用函数只能执行一次的封装,可以确保这些逻辑只会在第一次请求时执行一次。
  4. 单例模式:在某些情况下,我们需要确保某个类或对象只能被实例化一次,以保持全局唯一性。函数只能执行一次的封装可以用于实现单例模式,确保只有在第一次调用时才会创建该类或对象的实例。
Last modification:May 26, 2023
如果觉得我的文章对你有用,请随意赞赏