JS节流与防抖

JS节流和防抖是说的非常多一个话题,不论什么时候,

不然会来带很多性能问题。

节流

实现函数节流throttle的方法一般有两种:

  • 定时器setTimeOut

  • 时间戳new Date()

定时器方式

function throttle(fn, time) {
  let timer;
  return function(){
    const args = arguments;
    const _that = this;
    if(timer) {
      return;
    } 
    timer = setTimeOut(() => {
      fn.call(_that, args);
      timer = null;
    }, time);
  }
}

或者两者组合起来使用,更加精确

定时器+时间戳方法

测试

防抖

当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时。

测试:设置一个定时器,每10ms执行一次,1s后关闭。 debounce防抖时间设置为500ms,则函数应该在1.5s后执行

Last updated