防抖&节流

防抖函数是在单位时间(>1)随便触发多少次事件,只要这次触发的时间与上次触发的时间只差不到1s,都不执行;
节流函数是在单位时间(>1)随便触发多少次事件,只要过了1s,就会执行一次。

// 输入一个函数及要求做节流处理时间频率
// 返回一个具备节流效果的函数
export const throttle = function (fn, t) {
  let timerId = null
  function throttleDoSomething () {
    if (timerId) {
      return
    }
    timerId = setTimeout(() => {
      fn.apply(this)
      // fn()
      timerId = null
    }, t)
  }
  return throttleDoSomething
}
// 防抖函数
export const debounce = function (func, delay) {
  let timer = null
  return function (...args) {
    // 取消已有的定时器(其实可以理解为,取消了上一次的函数调用)
    if (timer) clearTimeout(timer)
    timer = setTimeout(() => {
      func.apply(this, args)
    }, delay)
  }
}

调用:
    // debounceClick: 具有防抖效果的函数
    debounceClick: debounce(function () {
      // 执行
    }, 1000),
    // throttleInput: 具有节流效果的函数
    throttleInput: throttle(function () {
      // 执行
    }, 1000),
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值