以不同方式运行JavaScript函数

时间:2015-11-05 22:18:10

标签: javascript jquery

我有这样的文本输入,它将对用户输入的每个键执行搜索。由于搜索功能需要一点时间才能执行用户输入,直到完成执行为止。

  <input type="text" id="suggestion" onkeyup="search();"/>

我们可以让这个搜索功能执行,让用户输入文本字段。像让搜索在后台运行的东西。

PS 即可。我不想使用延迟函数等到用户完成并调用search()

2 个答案:

答案 0 :(得分:2)

JavaScript在单个线程上运行 - 因此,当搜索功能运行时,它还会阻止UI呈现并响应您。您应该尽可能避免在持续时间超过16毫秒的浏览器上执行操作,您可以阅读有关原因here的更多信息。

无论如何,目前有2种主要解决方案:

  • 将其移至服务器端。你在JavaScript中运行的搜索逻辑是什么?它应该真的在客户端运行而不是在服务器端运行吗?
  • 在另一个线程上执行它。你熟悉WebWorkers吗?这是一个更高级的主题,但通常它允许您在另一个线程上执行代码。在今天的浏览器中它还是新的not fully supported,但你至少应该熟悉它。
祝你好运。

答案 1 :(得分:1)

也许不是每次都使用

设置全局开关时让它运行
window.somevar = true; 

然后在再次搜索之前检查是否设置了该变量。初始搜索完成后,显示结果并取消设置全局变量

delete window.somevar;

这样功能&#34;运行&#34;每次按键,但不会锁定输入。