函数防抖和节流快速记忆

函数去抖

单位时间内,无论触发多少次 只执行一次;这里的时间是短暂的 极端情况下,函数会一直处于等待状态

函数去抖常用于防止 短时间内重复执行函数

 

 1 function debounce(func, delay) {
 2     //去抖
 3     var tId;
 4     return function () {
 5       var context = this;
 6       var arg = arguments;
 7       if (tId) clearTimeout(tId);
 8       tId = setTimeout(function () {
 9         func.apply(context, arg);
10       }, delay);
11     };
12   }
13 
14 //使用
15 debounce(function () {
16       console.log(1)
17     }, 2000)

 

函数节流:

 

单位时间内只执行一次;不同于防抖,节流多用于持续触发 且 不会出现极端情况

 

 

function throttle(func, delay) {
    //函数节流
    var timer = null;
    var startTime = Date.now();
    return function () {
      var curTime = Date.now();
      var remaining = delay - (curTime - startTime);
      var context = this;
      var args = arguments;
      clearTimeout(timer);
      if (remaining <= 0) {
        func.apply(context, args);
        startTime = Date.now();
      } else {
        timer = setTimeout(func, remaining);
      }
    };
  }

 

posted @ 2020-07-28 15:37  四两websir  阅读(143)  评论(0编辑  收藏  举报