跳到正文
当下的七炎
返回

防抖和节流的简单实现

编辑文章

先说一下我的理解 防抖(debounce) 先判断,后执行,没有操作某时间后执行

function debounce(fn, time) {
  let timeout;
  return function() {
    if (timeout) {
      clearTimeout(timeout);
    }
    timeout = setTimeout(() => {
      fn();
    }, time);
  };
}

节流(throttle) 先执行,再判断。先执行一次,某时间内,操作无效,某时间后,可以执行

function throttle(fn, time = 250) {
  let preTime = 0;
  return () => {
    let context = this;
    let args = arguments;
    let now = Date.now();
    if (!preTime || now >= preTime + time) {
      preTime = now;
      fn.apply(context, args);
    }
  };
}

扩展阅读

理解并优化函数节流Throttle


编辑文章
分享这篇文章:

评论

使用 GitHub 账号登录后即可评论


上一篇
call和apply以及bind的简单实现
下一篇
错题集