zoukankan      html  css  js  c++  java
  • 函数的防抖和节流

    防抖

    所谓防抖,就是指触发事件后在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);
  • 相关阅读:
    fenby C语言 P9
    fenby C语言 p7
    fenby C语言 P6
    fenby C语言
    让博客园博客自动生成章节目录索引
    python学习之路:生成器并行运算
    Python学习之路:生成器
    Python学习之路:装饰器实现终极版
    Python学习之路:装饰器实现2
    Python学习之路:装饰器实现
  • 原文地址:https://www.cnblogs.com/z937741304/p/11468621.html
Copyright © 2011-2022 走看看