防抖&节流函数的实现

防抖和节流函数算是非常基础的工具函数了,说一下个人的简单理解:

  • 防抖:用户操作会在一定等待一段时间后执行function,如果用户在等待时间范围内重复操作,则重新计算等待时间(相当于有施法前摇时间,如果你重复释放技能,则技能前摇重新计算。)

  • 节流:用户频繁操作下,function必须经过一定的时间间隔后才会执行,如每10秒才可以执行一次。相当于有冷却时间的function

具体实现:
防抖:
function debounce(fn, wait) {
  var timer = null;
  return function() {
    // 如果此时存在定时器的话,则取消之前的定时器重新记时
    if (timer) {
      clearTimeout(timer);
      timer = null;
    }
    // 设置定时器,使事件间隔指定事件后执行
    timer = setTimeout(() => {
      fn.apply(this, arguments);
    }, wait);
  };
}
节流
function throttle(fn, delay) {
  var preTime = Date.now();

  return function() {
      var nowTime = Date.now();
    // 两次时间间隔超过了指定时间的话,则执行函数。
    if (nowTime - preTime >= delay) {
      preTime = Date.now();
      return fn.apply(this, arguments);
    }
  };
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值