防抖(debounce)和节流(throttle)函数之节流函数

 上篇博客写到,防抖函数是在规定的一段事件内,只执行一次函数,那要是用户一直拖着鼠标滚来滚去,理论上来说就一直不会输出距离顶部的距离,那么要是产品提个需求,就算用户不断的拖着滚动条,也能每过一段事件就输出一次距离顶部的距离呢?
 这个就是就要用到我们的节流函数了

function top() {
     let top = document.documentElement.scrollTop
     console.log(`滚动条的位置:${top}`)
 };

 function throttle(fn, wait) {
     var lastTime = null
     return function() {
         var nowTime = new Date().getTime()
         if (nowTime - lastTime > wait) {
             fn()
             lastTime = nowTime
         }
     }
 }
 window.onscroll = throttle(top, 1000)

实现节流的方法不止时间戳一么一种,还可以借助计时器的状态和判断计时器的返回值来实现,原理其实都差不多

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值