你如何解决实时搜索的"滞后"问题?

mar*_*c.d 5 search jquery

嗨,我正在我的webapp中实现实时搜索(=键入时搜索)功能.目前我正在使用keyup事件通过ajax post发送搜索请求,例如

$('#SearchField').keyup(function(e) {
        $.post(
           ...
        );
});
Run Code Online (Sandbox Code Playgroud)

但是这会导致某种滞后问题,在某些情况下,当我搜索时,例如在"问题"之后,"专业"的响应在"问题"的响应之后显示出来,并以一种方式覆盖正确的搜索结果结果很好.

什么是打击这种行为的好方法?

TIA

Mat*_*ieu 5

你可以中止以前的请求

var xhr = null;
$('#SearchField').keyup(function(e) {
  if (xhr !== null) xhr.abort ();
  xhr = $.post(
    ...
  );
});
Run Code Online (Sandbox Code Playgroud)

或为每个请求设置分配ID.当请求完成时,如果已经返回更大的id,则忽略该答案.否则,存储id.