JS防抖节流

本文介绍了JavaScript中的防抖(debounce)和节流(throttle)技术,用于优化事件处理函数的执行效率。防抖函数确保在设定时间内最后一次触发事件后才执行,而节流函数则保证在设定时间内只执行一次。示例代码展示了如何实现这两个技术,分别应用于滚动事件和鼠标移动事件,以减少不必要的计算和提高性能。

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

1.防抖:持续触发事件时,在设定时间段内没有触发,才会去调用这个事件处理函数,在设定的时间段内如果事件又被触发,则不调用事件处理函数,并从触发事件重新开始延时。

        function debounce(fn, timeout){

                   timeout = timeout || 1000;

                   let timer;

                   return () => {

                     if(timer){ clearTimeout(timer)}

                             timer = setTimeout(() => {

                                       n()

                             },timeout)

                           }

                }

        function printEvent(){

           console.log('1121212')

        }

  window.addEventListener('scroll',debounce(printEvent,1000),false)

2.节流:当事件被持续触发时,在设定事件内只让事件处理函数触发一次。

//节流函数

function throttle(fn, range){

   range = range || 1000;

   let timer;

   return () => {

     //console.log(111,typeof timer)

     if(!timer){

       timer = setTimeout( () => {

          fn()

         timer = null

       },range)

     }

   }

}

  window.addEventListener('mousemove',throttle(printEvent,1000),false)

//节流函数 时间戳模式

var throttle2 = function(func, delay) {

   var prev = Date.now();

   return function() {

     var context = this;

     var args = arguments;

     var now = Date.now();

     if (now - prev >= delay) {

       func.apply(context, args);

       prev = Date.now();

     }

   }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值