防抖和节流

防抖:指触发事件后的n秒内函数只执行一次,若在n秒内再次触发则重新计算时间。

// 防抖 debounce
    // 延后执行
    function debounce(func, wait) {
      let timer;
      return function() {
        if (timer) clearTimeout(timer);
        timer = setTimeout(function() {
          func.apply(this);
        }, wait);
      }
    }
    // 立即执行
    function debounce2(func, wait) {
      let timer;
      return function() {
        if (timer) clearTimeout(timer);
        let callnow = !timer;
        timer = setTimeout(function() {
          timer = null;
        }, wait);
        if (callnow) func.apply(this);// 第一次执行
      }
    }

 

节流:连续发生的事件在n秒内只执行一次。

// 节流 throttle
    function throttle(func, wait) {
      let timer;
      return function() {
        if (!timer) {
          timer = setTimeout(() => {
            timer = null;
            func.apply(this);
          }, wait)
        }
      }
    }

应用场景:即时查询。

上一篇:docker容器网络配置


下一篇:ThinkPHP 3.2公共类库、应用类库ThinkPHP/Library讲解