手写防抖函数

60 阅读1分钟

防抖函数实际的运用场景,input框的输入,不想被频繁的调用接口(一个字母就调用一次接口,浪费性能)

// func是用户传入需要防抖的函数
// wait是等待时间
const debounce = (func, wait = 50) => {
  // 缓存一个定时器id
  let timer = 0
  // 这里返回的函数是每次用户实际调用的防抖函数
  // 如果已经设定过定时器了就清空上一次的定时器
  // 开始一个新的定时器,延迟执行用户传入的方法
  return function(...args) {
    if (timer) clearTimeout(timer)
    timer = setTimeout(() => {
    //这里进行接口调用
      func.apply(this, args)
    }, wait)
  }
}