防抖节流hooks,传入一个普通函数返回一个带有防抖或者节流的函数

本文介绍如何通过hooksFn方法,接收普通函数、时间间隔和类型参数,创建防抖或节流的处理函数,适用于提升性能的回调函数管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调用hooksFn方法,通过传入一个普通的函数,返回一个带有防抖或者节流的方法

该方法接接收3个参数,返回一个新函数
param: fn 需要进行防抖节流的普通函数
param: time防抖节流的时间
param: type需要返回的函数时防抖还是节流 (notShake:防抖 throttle:节流)

type Type = 'notShake' | 'throttle'


/**
 * @params fn 要处理的方法; time 时间;  type  返回的方法类型(notShake:防抖 throttle:节流);
 * @return 返回一个防抖的函数 或者 节流的函数
*/
const hooksFn = (fn: Function, time:number, type: Type) => {
  let timer:any = null

  if (type === 'throttle') {
    return function(...args: Array<any>) {
      if (!timer) {
        timer = setTimeout(() => {
          clearTimeout(timer)
          timer = null
        }, time);
        fn(...args)
      }
    }
  } else {
    return function(...args: Array<any>) {
      clearTimeout(timer)
      timer = null
      timer = setTimeout(() => {
        clearTimeout(timer)
        timer = null
        fn(...args)
      }, time);
    }
  }
}


export default hooksFn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值