返回

让你的代码更加顺滑 - 防抖与节流:掌握前端函数的艺术

前端

事件的防抖和节流函数是我们经常用到的函数,在实际的开发过程中,如 scroll、resize、click、键盘等事件很容易被多次触发,频繁的触发回调会导致页面卡顿和抖动,为了避免这种情况,需要对事件进行防抖和节流处理。

防抖

防抖函数可以防止一个函数在短时间内被重复触发,它会在一定时间内只执行一次函数。例如,当你在输入框中输入文字时,防抖函数可以防止输入框的 change 事件被频繁触发,从而提高输入体验。

节流

节流函数可以限制一个函数在一定时间内只执行一次,它会在一定时间内只执行函数的最后一次调用。例如,当你在滚动页面时,节流函数可以防止 scroll 事件被频繁触发,从而提高页面的滚动性能。

防抖和节流的实现

防抖和节流函数的实现有很多种,这里介绍两种最常用的实现方法:

  • setTimeout() 方法
function debounce(func, wait) {
  let timeout;
  return function() {
    clearTimeout(timeout);
    timeout = setTimeout(() => {
      func.apply(this, arguments);
    }, wait);
  };
}
  • requestAnimationFrame() 方法
function throttle(func, wait) {
  let lastCallTime = 0;
  return function() {
    const now = Date.now();
    if (now - lastCallTime >= wait) {
      func.apply(this, arguments);
      lastCallTime = now;
    }
  };
}

防抖和节流的使用场景

防抖和节流函数在前端开发中有广泛的应用场景,以下列举一些常见的场景:

  • 输入框的 change 事件 :防止输入框的 change 事件被频繁触发,从而提高输入体验。
  • 滚动条的 scroll 事件 :防止滚动条的 scroll 事件被频繁触发,从而提高页面的滚动性能。
  • 窗口的 resize 事件 :防止窗口的 resize 事件被频繁触发,从而提高窗口的调整大小的性能。
  • 点击按钮的 click 事件 :防止点击按钮的 click 事件被频繁触发,从而防止按钮被多次触发。

总结

防抖和节流函数是前端开发中的重要工具,它们可以帮助您优化用户体验,提高应用程序的性能和用户满意度。掌握防抖和节流函数的使用方法,可以帮助您编写出更流畅、更稳定的前端代码。