节流与防抖

防抖:事件连续触发的,在一段时间内,只执行最后一次

原理:该事件还未执行时再次触发该时间,则这个事件就要重新开始,所以最后表现只执行了最后一次(重新执行)

定时器实现:每次触发下一个定时器之前清除掉之前的定时器

应用场景:文本框输入

<body>

  <input type="text" id="input">

    <script>const input = document.querySelector('#input')

​    input.oninput = debounce(function () {// 这里的this是window

​      console.log(this.value)}, 500)function debounce(fn, delay) {var t = nullreturn function () {//定时器有值就取消定时器if (t != null) {clearTimeout(t)}

​        t = setTimeout(() => {//这里的this是inputfn.call(this)// console.log(this)}, delay)}}

  </script>

</body>

节流:事件连续触发,在一段时间内,只执行一次

原理:多次事件触发过程中,后续触发的事件只能在前边事件结束之后再触发(不打断)

定时器实现:等之前的定时器结束后,才能执行下边的定时器

应用场景:鼠标滑动,快速点击,scroll

鼠标滑动案例:

  <!-- 节流是为了控制高频率事件的执行次数 -->

    <style>

​    body {height: 3000px;}

  </style>
        var flag = true
        window.onscroll =throttle(function () {
            console.log(123)
        },500)
            function throttle(fn,delay) {
                    if (flag) {
                        setTimeout(() => {
                            fn.call(this)
                            flag = true
                        }, delay)
                    }
                    flag = false
                }
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值