我有这样的文本输入,它将对用户输入的每个键执行搜索。由于搜索功能需要一些时间来执行,因此用户输入会被卡住,直到执行完成为止。
<input type="text" id="suggestion" onkeyup="search();"/>
我们可以让这个搜索函数执行并让用户在文本字段中输入内容吗?比如让搜索在后台运行。
ps。我不想使用延迟函数等待用户完成并调用 search()
最佳答案
JavaScript 在单线程上运行 - 因此,当搜索功能运行时,它还会阻止 UI 渲染和响应您。您应该尽可能避免在浏览器上进行持续时间超过16ms的操作,详细原因可以阅读here .
无论如何,目前有两个主要解决方案:
- 将其移至服务器端。您在 JavaScript 中运行的搜索逻辑是什么?它真的应该在客户端而不是服务器端运行吗?
- 在另一个线程上执行它。您熟悉 WebWorkers 吗?这是一个更高级的主题,但通常它允许您在另一个线程上执行代码。这是相当新的not fully supported但在当今的浏览器中,您至少应该熟悉它。
祝你好运。
关于javascript - 以不同方式运行 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33555867/