Javascript 忽略旧的多个异步ajax请求
我有一个自定义javascript自动完成脚本,它通过多个异步ajax请求命中服务器。(每次按键时。) 我注意到,有时一个较早的ajax请求会在稍后的请求之后返回,这会把事情搞砸 我现在处理这个问题的方法是,我有一个计数器,为每个ajax请求递增。返回计数较低的请求将被忽略 我在想:这样合适吗?还是有更好的方法来处理这个问题 提前感谢, Travis您可以存储一个“全局”Javascript 忽略旧的多个异步ajax请求,javascript,ajax,asynchronous,Javascript,Ajax,Asynchronous,我有一个自定义javascript自动完成脚本,它通过多个异步ajax请求命中服务器。(每次按键时。) 我注意到,有时一个较早的ajax请求会在稍后的请求之后返回,这会把事情搞砸 我现在处理这个问题的方法是,我有一个计数器,为每个ajax请求递增。返回计数较低的请求将被忽略 我在想:这样合适吗?还是有更好的方法来处理这个问题 提前感谢, Travis您可以存储一个“全局”currentAjaxRequest,它保存最后一个XHR请求的结构。然后,您可以在发出新请求时中止当前请求 例如: var
currentAjaxRequest
,它保存最后一个XHR请求的结构。然后,您可以在发出新请求时中止当前请求
例如:
var currentAjaxRequest = null;
function autoCompleteStuff() {
if(currentAjaxRequest !== null) {
currentAjaxRequest.abort();
}
currentAjaxRequest = $.get(..., function(...) {
currentAjaxRequest = null;
...
});
}
为了避免命名冲突,如果需要的话,将其包装在一个匿名的、即时执行的函数中。我认为每次按下一个键时发送一个ajax请求是在同时有两个用户时导致yoru服务器过载的一种方法。试着通过设置一个延迟计时器来限制这件事,这样只有在半秒钟内没有按键的情况下才会发送请求,那么当用户停止键入时,您只会收到一次点击。例如,这个评论可能会造成383次服务器点击…@Karl同意,但这仍然可能是一个问题。