美文网首页
函数节流与函数防抖

函数节流与函数防抖

作者: E1FANG | 来源:发表于2019-08-22 21:22 被阅读0次

    函数节流

    限制一个函数在一定时间内只能执行一次。
    就像玩lol的释放技能,每个技能都有CD,当技能处于CD时,无法释放技能。

    var fn = function () { }  //声明一个技能
    var cd = false //一开始 技能是不处于CD状态的 可以释放
    
    $button.onclick = function () {  //释放技能
        if (cd) {
            //当技能处于CD时,什么都不做
        } else {
            fn()  //释放技能
            cd = true   //技能进入CD
            var timer =setTimeout(function(){
                cd = false
            },3000) //3秒后技能冷却好了
        }
    }
    

    函数防抖

    函数防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。
    就像公交车司机,他每次停车 只能关一次门,当有乘客上车时,他就等5秒钟,才关门,在这几秒钟之内,又有乘客上车
    他就只能再重新等5秒钟才能关门,以此类推,直到下次5秒钟之内,没有乘客上车了,他才关门

    带着一起做

    
    var timer  //初始化计时器
    var fn = function(){}  //关门动作
    button.onclick = function(){
        // 如果计时器存在,即距离上次乘客上车还没过5秒,就清除计时器
        if(timer){
            clearTimeout(timer)
        }
        timer = setTimeout(()=>{
            fn()
        },5000)  //5秒后关门
    }
    

    当用户重复某操作时(上车),只有在最后一次才执行fn()(关门)

    相关文章

      网友评论

          本文标题:函数节流与函数防抖

          本文链接:https://www.haomeiwen.com/subject/hvoosctx.html