Skip to content

防抖和节流函数

控制频繁触发的函数

防抖

频繁触发的函数间隔小于设定的时间,指挥执行最后一次调用

javascript
const debounce = function (callback, duration = 200) {
  let timer = null;
  return function (...args) {
    cleartimeout(timer);
    timer = setTimeout(() => {
      callback(...args);
    }, duration);
  };
};

节流

频繁触发的函数每隔一段设定的时间执行一次

javascript
const throttle = function (callback, duration) {
  let canRun;
  return function (...args) {
    if (!canRun) {
      return false;
    }
    canRun = false;
    callback(...args);
    setTimeout(() => {
      canRun = true;
    }, duration);
  };
};