面试题专区

节流防抖原理以及如何实现

2019-08-13  本文已影响0人  差点被发现叻

防抖函数原理(debounce)

在事件被触发 n 秒后再执行回调,如果在这 n 秒内又被触发,则重新计时。
手写简化版:

const debounce = (fn, delay) => {
  let timer= null;
  return (...args) => {
    clearTimeout(timer);
    timer= setTimeout(()=> {
      fn.apply(this, args);
    },delay);
  };
};

适用场景:

节流函数原理(throttle)

规定在一个单位时间内,只能触发一次函数。如果这个单位事件内触发多次函数,只有一次生效。

const throttle = (fn, delay= 500) {
  let flag= true;
  return (...args) => {
    if(!flag) reurn;
    flag= false;
    setTimeout(()=> {
      fn.apply(this, args);
      flag= true;
    }, delay);
  };
};

适用场景

上一篇下一篇

猜你喜欢

热点阅读