• 函数的防抖和节流


    防抖

    所谓防抖,就是指触发事件后在n秒内函数只能触发一次,如果在n秒内又触发了事件,则会重新计算函数执行时间。

    /*
      防抖函数
      @param {Function} func 要执行的函数
      @param {Number} wait 要等待的时间 ms
    */
    function debounce(func, wait) {
      let timer = null;
      return function () {
        let context = this;
        let args = arguments;
    
        timer && clearTimeout(timer);
        timer = setTimeout(() => {
          func.apply(context, args)
        }, wait);
      }
    }

    // 使用方法
    document.getElementById('btn').onclick = debounce(function () {
      this.innerHTML = '按钮' + num++;
    }, 200);

    节流

    所谓节流,就是指连续触发事件,但是在n秒中只执行一次函数。

    /*
      节流函数
      @param {Function} func 要执行的函数
      @param {Number} wait 要等待的时间 ms
    */
    function throttle(func, wait) {
      // 记录上一次函数触发的时间
      let lastTime = 0;
      return function () {
        let nowTime = Date.now();
        let context = this;
        let args = arguments;
        if (nowTime - lastTime > wait) {
          // 修正this指向
          func.apply(context, args);
          lastTime = nowTime;
        }
      }
    };
    // 使用方法 document.onmousemove
    = throttle(function () { console.log('函数触发了?') }, 200);
  • 相关阅读:
    ngx_lua_waf
    一致性hash算法
    BloomFilter理解
    SkipList理解
    es中的一些知识点记录
    普通类、抽象类和接口区别:
    spring中的事件 applicationevent 讲的确实不错(转)
    CMS和G1的区别,以及Parallel
    SpringBoot优化内嵌的Tomcat ---设置MaxConnections
    tomcat启动nio,apr详解以及配置
  • 原文地址:https://www.cnblogs.com/z937741304/p/11468621.html
Copyright © 2020-2023  润新知