我在我的应用程序中有搜索字段的自定义监视器:
watch: {
search (query) {
if(query.length > 2) {
axios.post(url, query)
.then(res => {
console.log(res)
})
.catch(error => {
console.log(error)
})
}
}
}
在这里,正如你所看到的,我已经向服务器发送了请求,在我的情况下,每个search
var的值都发生了变化。我累了粘贴我的代码内setTimeout
,但当用户键入3次,然后请求也发送3次,而不是一次。我需要等待当用户正在键入和停止键入后发送一个请求到服务器。
setTimeout(function () {
// request code here
}, 3000);
如何在vue.js watchers中正确执行?
3条答案
按热度按时间ldfqzlk81#
您可以在lodash中使用
debounce
。非常适合您的使用。如果你想在没有lodash库的情况下实现它,你可以试试
wecizke32#
您应该使用任何标志来指示您的请求正忙碌:
bxfogqkk3#
您可以使用箭头函数并将代码放在其中。
有关解决此问题的更多方法,请查看此链接。https://stackoverflow.com/a/38431406/4494207