js的节流、防抖函数

节流:

预定一个函数只有在大于等于执行周期时才执行,周期内调用不执行,连续触发时,安等待时间执行事件,降低频率。

防抖:

短时间内多次触发同一事件,使他只执行最后一次或只执行第一次中间不执行。连续触发时,不执行事件,定制触发事件,通过延迟时间触发停止操作前执行的最后一次事件。

节流防抖的函数封装:

节流:

 // 参数:要处理的方法,等待时间
        function throttle(handler,wait){
            let lastTime=0;
            return function(){
                let nowTime=newDate().getTime();
                if(nowTime-lastTime>wait){
                    // 当前点击事件与上次点击时间相差大于wait
                    handler();
                    //把上次触发时间赋值为当前触发时间
                    lastTime=nowTime;
                }
            }
        }

防抖:

        function debounce(handler, delay) {
            let timer = null;
            return function() {
                //在延迟时间内再次出发此事件,则清楚上次定时器,重新开启定时器,准备触发事件;
                clearTimeout(timer)
                timer=setTimeout(function(){
                    handler()
                },delay)
            }

        }



        function debounce(handler, wait) {
            let time = null;
            //如果handler函数需要传参,则需要去接参
            let arg = Array.from(arguments).slice(2)
            return function() {
                //handler 需要被多个对象调用时,则需要保存这里面的this
                let that = this;
                clearTimeout(timer)
                timer=setTimeout(function(){
                    handler.apply(that,arg)
                },delay)
            }

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值