防抖和节流代码实现

防抖和节流

含义:防抖(Debounce)和节流(throttle)都是用来控制某个函数在一定时间内执行多少次的技巧,两者相似而又不同。

函数节流(throttle):是让一个函数无法在很短的时间间隔内连续调用,当上一次函数执行后过了规定的时间间隔,才能进行下一次该函数的调用。

函数去抖(debounce):让一个函数在一定间隔内没有被调用时,才开始执行被调用方法。
作用:性能优化(控制触发频率,或者执行次数)

  • 防抖

    实现思路:当事情发生的时候,不直接执行事件处理函数,而且去开启一个定时器,开始等待计数(30ms),如果在计数过程中,又触发了事件,停止当前定时,从新开始计数
    
    function debounce(fun,wait){
    	var timer;
        return function(){ 
            //如果在计数过程中,又触发了事件,停止当前定时,从新开始计数
            if(timer){cliearTimeout(timer)}
            timer = setTimeout(fun,wait);
            /*setTimeout(function(){
                fun();
            },wait);*/
        }
    }
    
  • 节流

    function throttle(fun, wait) {
        var timer;  //开   timer=undefined
        return function () {
            if (!timer) { //判断timer是否有值(当前是否已经开启了定时器) ,
                timer = setTimeout(function () { //关
                    fun();
                    timer = undefined; //开
                }, wait)
            }
        }     
    }
    
  • 防抖和节流的区别

    • 防抖:高频率触发事件,只执行一次
    • 节流:高频率触发事件,按一定的频率执行,隔一会执行一次
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值