什么是防抖和节流?有什么区别?如何实现?

2021-03-27  本文已影响0人  小杰66

防抖
高频事件在触发后n秒内只会执行一次,如果n秒内再次触发则重新计算时间

function debounce(fn, time = 500) {
  let t;
  return function () {
    if (t) {
      clearTimeout(t);
      t = null;
    }
    const context = this;
    t = setTimeout(function () {
      fn.apply(context, arguments);
      t = null;
    }, time);
  };
}

节流
高频事件在触发后n秒内只会执行一次,如果n秒内再次触发则pass

function throttle(fn, time = 500) {
  let t;
  return function () {
    if (t) return;
    const context = this;
    t = setTimeout(function () {
      fn.apply(context, arguments);
      t = null;
    }, time);
  };
}
上一篇 下一篇

猜你喜欢

热点阅读