一篇文章理清什么是防抖、节流
  BXnldh6dDlk1 2023年12月06日 18 0

一篇文章理清什么是防抖、节流_前端

防抖和节流是两种常见的前端优化技术,用于限制函数的执行次数。

防抖是指在事件被触发后,等待一段时间后执行函数。如果在这段时间内事件再次被触发,那么计时器会被重置,重新等待一段时间后执行函数。这可以防止函数被频繁调用,特别是一些高频事件(如窗口调整大小、滚动等)。

function debounce(func, delay) {
  let timerId;
  
  return function(...args) {
    clearTimeout(timerId);
    
    timerId = setTimeout(() => {
      func.apply(this, args);
    }, delay);
  };
}

function handleResize() {
  console.log('Window resized!');
}

const debouncedResizeHandler = debounce(handleResize, 300);

window.addEventListener('resize', debouncedResizeHandler);

在上面的例子中,我们使用setTimeout来延迟执行传入的函数。

总的来说,防抖就是只认最后一次调用。

节流是指在一定时间间隔内,只执行一次函数。如果在这段时间内事件再次被触发,将会被忽略不执行。

function throttle(func, delay) {
  let timerId;
  let lastExecTime = 0;
  
  return function(...args) {
    const currentTime = Date.now();
    
    if (currentTime - lastExecTime >= delay) {
      func.apply(this, args);
      lastExecTime = currentTime;
    }
  };
}

function handleScroll() {
  console.log('Window scrolled!');
}

const throttledScrollHandler = throttle(handleScroll, 300);

window.addEventListener('scroll', throttledScrollHandler);

在上面的例子中,新的函数通过比较当前时间和上次执行时间来限制函数的执行。

总的来说,节流就是指定时间内只触发一次函数。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月06日 0

暂无评论

推荐阅读
  E929ZvlRxyUs   2023年12月23日   19   0   0 前端url前端URL
BXnldh6dDlk1