JS 节流

JS 节流

说明:

1.对于高频触发的监听事件函数,实现对于触发次数的间接限制,从而降低触发次数.

2.关键点在于控制时间周期内,阻止触发内容,即上锁;在时间周期外解锁,触发内容。

3.主要是对间隔时间限制,在规定时间内,阻止触发事件内指定程序或默认抛弃

4.三种实现节流方式:时间戳版,定时器版,束流版

5.相当于"技能冷却时间"

初始化代码

<style>
    .wrap {
      margin: 20px auto;

      width: 400px;
      height: 250px;
      box-shadow: 0 0 4px #333;

      color: #08d;
      font-size: 40px;
      font-weight: 800;

      display: flex;
      justify-content: center;
      align-items: center;

      cursor: pointer
    }
</style>
<body>
  <div class="wrap">0</div>
</body>

请添加图片描述

时间戳版

<script>
//时间戳版
    let oWrap = document.querySelector(".wrap")
    let count = 0
    let time = 0
    //时间戳版
    oWrap.addEventListener("mousemove", function () {
      if (Date.now() - time < 1000) {
        return false;
      }
      time = Date.now()
      write()
    }, false)
    
    function write() {
      oWrap.innerText = count++
    }
</script>

定时器版

//定时器版
	let oWrap = document.querySelector(".wrap")
	let count = 0
    let lock = false
    oWrap.addEventListener("mousemove", function () {
      if (lock) {
        return true
      }
      lock = true
      write()

      //控制再次触发时间间隔
      setTimeout(() => {
        lock = false
      }, 1000);
    }, false)

    function write() {
      oWrap.innerText = count++
    }

束流版

 //束流版
 	let oWrap = document.querySelector(".wrap")
    let count = 0
    let num = 0
    oWrap.addEventListener("mousemove", function () {
      num++
      if (num % 100 !== 0) {
        return false;
      }
      write()
    }, false)
    
    function write() {
      oWrap.innerText = count++
    }

效果

当鼠标在div元素上移动时,触发mousemove事件,通过三种节流函数控制,“限制”在规定时间内触发write函数,从而“防止”元素内的数字快速增加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值