Javascript 如何限制每次自定义时间的AJAX请求

Javascript 如何限制每次自定义时间的AJAX请求,javascript,ajax,jsp,request,limit,Javascript,Ajax,Jsp,Request,Limit,如果我有一个搜索框,可以在每个按键事件上加载建议。我认为,对我来说,最糟糕的情况是,在每一个keyup事件中,我的服务器都会对每一个请求做出响应,这可能会在一秒钟或更长时间内发生10次。我的意思是应该有一些AJAX请求限制函数来限制每秒或任何特定时间的请求。您能通过编码示例告诉我如何限制ajax请求吗 第二件事,如果我们使用JSP限制AJAX请求,我想和大家分享一下。将JSP作为客户端语言是一个好主意,恶意用户可以轻松删除这些ajax请求限制功能并毁灭服务器 或者!有什么补救办法吗 感谢阅读。您

如果我有一个搜索框,可以在每个按键事件上加载建议。我认为,对我来说,最糟糕的情况是,在每一个keyup事件中,我的服务器都会对每一个请求做出响应,这可能会在一秒钟或更长时间内发生10次。我的意思是应该有一些AJAX请求限制函数来限制每秒或任何特定时间的请求。您能通过编码示例告诉我如何限制ajax请求吗

第二件事,如果我们使用JSP限制AJAX请求,我想和大家分享一下。将JSP作为客户端语言是一个好主意,恶意用户可以轻松删除这些ajax请求限制功能并毁灭服务器

或者!有什么补救办法吗


感谢阅读。

您需要设置一个计时器,以便在每次发生按键事件时重置。如果在计时器关闭之前没有按下任何键,则发送ajax请求。

您可以自己编写一个去盎司方法:

var timer = null;
searchInput.addEventListener('keyup', function (evt) {
    clearTimeout(timer);
    timer = setTimeout(function () {
        // this event listener will postpone its execution until after 1 second have elapsed since the last time it was invoked
        // send your ajax request here
    }, 1000);
}, false);
或者,您可以使用来限制keyup事件:

searchInput.addEventListener('keyup', _.debounce(function (evt) {
    // this event listener will postpone its execution until after 1 second have elapsed since the last time it was invoked
}, 1000), false);

请不要将两个无关的查询放在一个问题中。可能重复的