javascript - 在用户不活动几秒钟后执行 ajax 代码

标签 javascript ajax delay delayed-execution

我是新来的,所以请放轻松。这有点令人困惑。 :)

我正在处理一个搜索输入,其中用户在搜索文本框中输入另一个用户的姓名(或姓名的一部分),然后返回与该搜索字符串匹配的用户列表。问题是当涉及数万用户时,它有点慢。由于这种缓慢,当用户在搜索输入中快速输入名称时,屏幕将开始闪烁每次击键的搜索结果(在用户已经输入搜索字符串之后)。这就像一个严重延迟的 react 。

例如,如果我输入名称“Wendy”,搜索字符串“W”(我输入的第一个字符)的搜索结果甚至不会显示。然后将显示字母“W”的搜索结果,然后是“We”等等,即使我已经输入了全名并且只想查看“Wendy”的结果。

我想做的是仅当用户在一段时间内(我想是两秒钟)没有输入任何内容时才执行搜索。否则,将显示“正在搜索”字样。 Javascript 方法的代码如下。请注意,该代码目前可用于搜索用户,我只需要实现延迟执行。

function updateSearchResults() {
    if($F('searchString').length > 0){
        Element.update($('searchResultsScrollBox'), '<h3>Searching...</h3>'); 
        $('searching').style.display = 'block';
        var url = '<c:url value='ajaxFrontGetUsers.html'/>';
        var ajax = new Ajax.Updater({success: 'searchResults'}, url,
        {method: 'post', parameters: $('searchForm').serialize(true)});
         $('searching').style.display = 'none';
     }
}

我希望这一切都有意义。提前感谢任何可以提供帮助的人。

最佳答案

尝试以下步骤:

  1. 每隔几毫秒,检查文本框中是否有新数据。
  2. 如果文本框有新文本,执行您的 Ajax,并将文本复制到变量(用于在步骤 1 中进行比较)。

如果您想从那里提高性能,请在用户键入内容时激活计时器,并在进行 Ajax 调用时停用它。

关于javascript - 在用户不活动几秒钟后执行 ajax 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1235236/

相关文章:

javascript - Angular2 - 没有 LoggedInGuard 的提供者

javascript - Magnific Popup 无法在移动设备上运行

javascript - 'cache: false' 是否阻止缓存或对请求进行 UNIQUE-IFY 以绕过缓存?

javascript - 动态/迭代构建页面内容

javascript - window.onload延迟

java - 如何在按下按钮后延迟一行代码

javascript - 什么是向预先存在的重定向代码添加延迟的方法

javascript - Fabric JS : Performance of very large images (20mb+)

javascript - 服务异步更新值

javascript - 使用 xmlhttprequest 对象在两个文本框中显示值?