«

防抖和节流

yang 发布于 阅读:444 JS高阶阶段


防抖和节流是为了减少函数重复执行的频率,提高性能和节约资源。 防抖是指在一定时间内,事件触发后,只执行一次函数,而不是每次触发都执行一次函数,常用于输入框查询、窗口大小改变等事件。 节流是指在一定时间内,事件触发后,只执行一次函数,而不是拦截所有重复事件,常用于滚动事件、定时器等。

下面是防抖和节流的实现示例(JavaScript语言):

  1. 防抖
function debounce(func, delay) {
  let timer = null;
  return function() {
    clearTimeout(timer);
    timer = setTimeout(() => {
      func.apply(this, arguments);
    }, delay);
  };
}

防抖的原理是在一定时间内清除原有的定时器并重新设立一个,直到时间到期才执行函数。可以用debounce函数包装目标函数,例如:

function search() {
  console.log('searching...');
}

const debounceSearch = debounce(search, 500);

searchInput.addEventListener('input', debounceSearch);

在输入框输入内容时,只有停止输入500毫秒后才会执行搜索函数。

  1. 节流
function throttle(func, delay) {
  let lastTime = 0;
  return function() {
    let nowTime = Date.now();
    if (nowTime - lastTime > delay) {
      func.apply(this, arguments);
      lastTime = nowTime;
    }
  };
}

节流的原理是通过设定一个时间点,只有这个时间点到来时才能去执行函数。可以用throttle函数包装目标函数,例如:

function scroll() {
  console.log('scrolling...');
}

const throttleScroll = throttle(scroll, 500);

window.addEventListener('scroll', throttleScroll);

在滚动页面时,只有每500ms时才会触发scroll函数。

防抖和节流

版权所有:微4e
文章标题:防抖和节流
除非注明,文章均为 微4e 原创,请勿用于任何商业用途,禁止转载

推荐阅读:


扫描二维码,在手机上阅读
请先 登录 再评论