我在我的应用程序的前端使用VueJS,在后端使用Laravel。使用自由文本搜索减少对服务器的调用的最佳位置在哪里?
搜索输入'hello'
@keyup
将提出5个服务器请求
1st = h
2nd = he
3rd = hel
4th = hell
5th = hello
理想情况下,我希望能够在用户停止输入之前停止服务器请求,或者在按键时延迟按下。这样我每次搜索只会向服务器发送1或2个请求。
答案 0 :(得分:3)
我解决这个问题的方法是将请求置于超时状态,每次按下另一个键,重置超时。
这使得只有在一段时间内没有按键时才会执行请求。
function keyPressed() {
if (window.ajaxtimeout)
clearTimeout(window.ajaxtimeout);
window.ajaxtimeout = setTimeout(function () {
// Ajax request
}, 300);
};
此示例将在发送ajax请求之前等待击键之间的300毫秒。我发现这是一个很好的价值。
答案 1 :(得分:1)
您有多种解决方案:
setTimeOut()
功能,例如他可以在启动服务器请求之前按下一个按钮300ms。