DOM操作--防抖和节流


防抖

什么是防抖?

在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
比如:登录注册按钮,当用户点击时会向后端发送数据;
但当用户一直点击,如果我们不设置防抖,则会导致后台服务器一直接受这个数据,从而导致崩溃;所以必须设置防抖,来规定n秒后触发我们的业务,如果在n秒内点击了则重新计时。

如何实现防抖

//没封装前
<body>
    <button id="btn">登录</button>
   <script>
        let btn=document.getElementById("btn")
        function fn(){
            console.log(666)
        }
        function fangdou(){
        var timer=null
        return function(){
            clearTimeout(timer)
            timer=setTimeout(()=>{
                fn()
            },1000)
        }
        }
        btn.onclick=fangdou()
   </script>
</body>
//封装防抖函数
        function fangdou(time,callback) { 
            var timer=null
            return function () { 
                clearTimeout(timer)
                timer=setTimeout(()=>{
                    callback()
                },time)
             }
         }
         //使用方法
        btn.addEventListener("click",fangdou(1000,()=>{
            console.log(666)
        }))

节流

什么是节流?

指连续触发事件但是在n秒中只执行一次函数。节流会降低函数的执行频率。比如:将mousemove事件触发的频率降低。

如何实现节流?

//封装函数
           function jieliu(time,callback){
                var timer=null
                return function () {                     
                    if(!timer){
                        timer=setTimeout(()=>{
                            callback()
                            timer=null
                        },time)
                    }
                 }
            }
          // 使用方法
          document.onmousemove=jieliu(2000,()=>{
                console.log(666)
            })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

H5_ljy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值