定时器防抖太麻烦?教你封装防抖函数!减少耦合!

78 阅读1分钟

防抖和节流,不用多说,大家肯定耳熟能详了。 废话不多说,直接贴代码

/**
 * @param { Function } fun - 传入的执行函数体
 * @param { Number } time - 防抖时间
 * @description 创建防抖函数
 */
export const shakeFun = (fun, time) => {
  let shake = null
  return function (...arg) {
    clearTimeout(shake)
    shake = setTimeout(() => {
      fun(...arg)
    }, time)
  }
}
/**
 * @param { Function } fun - 传入的执行函数体
 * @param { Number } time - 节流时间
 * @description 创建节流函数
 */
export const throttlingFun = (fun, time) => {
  let isTue = true
  return function (...arg) {
    if (isTue === false) {
      return
    }
    fun(...arg)
    isTue = false
    setTimeout(() => {
      isTue = true
    }, time)
  }
}

实际应用如下 image.png