节流和防抖

Posted ailingstar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了节流和防抖相关的知识,希望对你有一定的参考价值。

都是解决用户频繁执行某个任务导致的问题

防抖

  • 指的是用户触发某动作时,一段时间后执行,比如3s后执行,如果用户多次点击,则重新计时
  • 实现思路:设置一个变量lasttime用来记录上次的执行时间,如果现在的时间-上次的时间>等待的时间,则执行任务,否则将lasttime赋值为nowtime,重新计时
const debunde=function(fn,wait){
    /**
             * 防抖:指的是,当某个功能执行时需要隔固定的时间才开始执行,如果持续的点击,则会重新计时
             */
            
            var timer=null
            
            // 使用闭包使得timer一直在内存中
            
            return function(){
                if(timer){
                    //如果没达到时间,则重新即使
                    clearTimeout(timer)
                }
                timer=setTimeout(function(){
                    console.log('被执行了')
                    fn.apply(this,arguments)
                },wait)
                
            }
}

节流

  • 指的是,一段时间内用户只能执行一次任务
  • 实现思路:setTimeout()
const tr=throttle(fn,wait){
   
     var lasttime=0
    // 闭包使得lasttime常驻内存
    return function(){
        var now=new Date()

        if(now-lasttime>wait){
            lasttime=now
            fn.apply(this,arguments)
    }
}
}

以上是关于节流和防抖的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript节流和防抖

120.节流和防抖,Vue中如何添加节流和防抖

120.节流和防抖,Vue中如何添加节流和防抖

节流和防抖的实现及其应用

函数节流和防抖

js节流和防抖