js节流防抖性能优化

1.节流

在单位时间内频繁触发,只会执行一次,也就是单位时间内你多次点击只有一次生效,当上次执行完毕才会执行下一次

   <script>
      function throttle(fn,time){
         let timer=null;
         return function(){
            if(!timer){//判断timer存在否
               timer =setTimeout(function(){
                  fn();//这里就是需要执行的功能代码
                  //清除定时器,这里不能使用clearTimeout需要让定时器为空
                  timer=null
                  //原因是在setTimeout中是无法删除定时器的,因为其还在运作
               },time)
            }
         }
      }
    </script>

2.防抖

在单位时间内被频繁触发,只会执行最后一次触发,如果上一次点击事件还没有触发完毕又进行点击,那么上一次点击触发的事件就会被取消

    <script>
      function throttle(fn,time){
         let timer=null;
         return function(){
            if(!timer){//判断timer存在否
               timer =setTimeout(function(){
                  fn();//这里就是需要执行的功能代码
                  //清除定时器,这里不能使用clearTimeout需要让定时器为空
                  timer=null
                  //原因是在setTimeout中是无法删除定时器的,因为其还在运作
               },time)
            }
         }
      }
    </script>

总结

代码千千万,适合自己最重要,欢迎大家指出错误和不足。

你可能感兴趣的:(javascript,开发语言,前端)