Vue 3输入框的防抖功能无法正常工作

前端开发 2026-07-10

Vue 3输入框的防抖未正确工作

watch(searchQuery, (newVal) => {
  debounceFetch(newVal)
})

function debounceFetch(val) {
  setTimeout(() => {
    fetchData(val)
  }, 500)
}

解决方案

在这里,setTimeout() 在每次迭代后未被清除

let debounceTimer = null

watch(searchQuery, (newVal) => {
  debounceFetch(newVal)
})

function debounceFetch(val) {
  clearTimeout(debounceTimer)

  debounceTimer = setTimeout(() => {
    fetchData(val)
  }, 500)
}

每次watch触发debounceFetch() 时,都会创建一个setTimeout(),最终导致多次请求被发送。

我们需要做的是清除之前创建的setTimeout()。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章