节流函数~

节流函数

节流函数的作用类似LOL、王者荣耀英雄的攻速,在前期等级不高时无论我们多快点击攻击按钮,英雄的攻击速度(攻击频率)都不会根据我们点击速度而改变。点击频率不会同步英雄攻击频率,而是有一个间隔时间(interval)在控制英雄攻速。

基础节流函数

function throttle(fn, interval, options) {
   
  // 1.记录上一次的开始时间
  let lastTime = 0

  // 2.事件触发时, 真正执行的函数,点击多少次这个函数就会执行多少次。
  const _throttle = function(..args) {
   

    // 2.1.获取当前事件触发时的时间
    const nowTime = new Date().getTime()

    // 2.2.使用当前触发的时间和之前的时间间隔以及上一次开始的时间, 计算出还剩余多长事件需要去触发函数
    const remainTime = interval - (nowTime - lastTime)
    if (remainTime <= 0) {
   
      // 2.3.真正触发函数
      fn.apply(this, args);
      // 2.4.保留上次触发的时间
      lastTime = nowTime
    }
  }

  return _throttle
}

第一次不需要执行(leading参数)

可选参数用options传入。

function throttle(fn, interval, options = {
     leading: true }) {
   
  const {
    leading } = options
  let lastTime = 0

  const _throttle = function (..args) {
   

    const nowTime = new Date().getTime()
    // lastTime === 0 第一次执行这个函数 && leading === false 用户不需要执行第一次。
    // lastTime = nowTime:就是remainTime === interval,等于重新开始。
    if (lastTime === 0 && leading === false) lastTime = nowTime;

    const remainTime = interval - (nowTime - la
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值