防抖与节流

文章介绍了JavaScript中两种重要的性能优化技术——防抖(debounce)和节流(throttle)。防抖技术确保在一系列连续操作后只执行一次函数,常用于窗口resize事件或长按事件处理。节流技术则保证在设定的时间间隔内只执行一次函数,适用于频繁触发的事件如滚动事件。两者都利用setTimeout来控制函数的执行,以提升应用性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、防抖是什么?

防抖,就是指触发事件后 n 秒后才执行函数,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。

1.1、使用步骤

代码如下(示例):

function debounce(fn,delay){
     // 记录上一次的延时器
     var timer = null;
     return function(){
         // 清除上一延时器
         clearTimeout(timer)
         // 重新设置新的延时器
         timer = setTimeout(function(){
                 fn.apply(this)
         },delay)
     }
 }
 document.getElementById('btn').onclick = debounce(function(){
     console.log('点击事件被触发了'+Date.now());
 },2000)  

2、节流是什么?

函数节流:一个函数执行一次后,只有大于设定的时间周期才会执行第二次。
函数节流限制一个函数在一定时间内只能执行一次。

2.1、使用步骤

代码如下(示例):

let timer = null;
function throttle (fun,wait) {
  return function () {
  	const argu = arguments;
    // 事件触发,如果之前有等待的事件,则不作处理
    if (timer) {
    } else {
      事件触发,前面没有事件在等待,则将事件进行等待执行
      timer = setTimeout(function () {
        fun();
      }, wait);
    }
  }
}

// 调用
throttle(fun, 100)(argu1, argu2);

总结

1.函数防抖debounce,在一段连续操作结束后,处理回调,利用 clearTimeout 和 setTimeout 实现。
2.函数节流throttle,在一段连续操作中,每一段时间只执行一次,频率较高的事件中使用来提高性能。
3.函数防抖debounce关注一定时间连续触发,只在最后执行一次,而函数节流throttle侧重于一段时间内只执行一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值