vue3 调用防抖函数失败,怎么解决?

作者站长头像
站长
· 阅读数 18

写的一个防抖函数:

const debounce = (fn, theTime) => {
  return function () {
    clearTimeout(fn.timer)
    fn.timer = setTimeout(() => {
      fn.call(this, ...arguments)
    }, theTime)
  }
}

下面是 vue3的一个input,用的elementui,定义了一个input事件search

<el-input
      v-model="txt"
      placeholder="请输入网址"
      clearable
      size="large"
      @input="search"
    ></el-input>

我想在search里调用debounce函数,怎么也调不成功:

const search = (e) => {
  debounce(() => {
    console.log('ssssf')
  }, 500)
}

是我调的方法不对吗?

回复
1个回答
avatar
test
2024-07-17

search 方法声明的时候多套了一层,你这么声明每次触发都会声明一个新的防抖方法,所以做不到防抖

const search = debounce(() => {
    console.log('ssssf')
}, 500)
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容