自定义Hooks(防抖,节流)

简单的防抖

// 一个最简单的防抖
function debounce(fun, wait = 50) {
  let timer;
  return function (...args) {
    // 有新的请求进来就干掉原来的计时器,重新开始计时
    if (timer) {
      clearTimeout(timer);
    }
    // 计时器完成,执行函数
    timer = setTimeout(() => {
      fun.apply(this, args);
    }, wait);
  };
}

简单的节流

/**
 * 一个简单的节流函数
 * @param {function} fun 需要执行的函数
 * @param {number} time 指定的时间周期长度(毫秒)
 */
export function easyThrottle(fun, time = 500) {
  console.log(fun, time);
  // 用于缓存当前时间,以判断上一次这个方法执行到现在已经用了多久
  let previous = 0;
  // 返回一个闭包函数
  return function (...args) {
    // 当前时间
    let now = Date.now();
    // 上次执行时间到当前时间是否已经允许再次执行
    if (now - previous > time) {
      // 执行函数
      fun.apply(this, args);
      // 修改上次时间为当前时间,下一次进入时就跟当前时间比较
      previous = now;
    }
  };
}

/**
 * 1. 建立一个变量timer,用于储存当次执行的时间
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值