2022-08-28----防抖和节流的区别

145 阅读1分钟

先上代码

//防抖
//如果定时器存在,清除定时器,重新执行函数
function debounce(fn,wait){
    var timer = null;
    return function(){
        if(timer !== null){
            clearTimeout(timer);
        }
        timer = setTimeout(fn,wait);
    }
}
//节流
//只有满足指定时间差才会执行
function throttle(func, wait) {
  let previous = 0;
  return function() {
    let now = +new Date();
    let remain = wait - (now - previous);

    if (remain < 0) {
      previous = now;
      func.call(this, arguments);
    }
  }
}

结论

  1. 防抖是在wait时间内,保证只有一个实例在执行,有后续实例时,只保证最后一个实例执行。

  2. 节流是在wait时间内,只执行一次实例,有后续实例时,也不执行,只执行当前的实例。