以不同的方式运行JavaScript函数
Running a JavaScript function differently
我有这样的文本输入,它将对用户输入的每个键执行搜索。由于搜索功能需要一点时间来执行,用户输入被卡住,直到它完成执行。
<input type="text" id="suggestion" onkeyup="search();"/>
我们可以让这个搜索函数执行并让用户在文本字段中键入吗。比如让搜索在后台运行。
ps。我不想使用延迟函数来等待用户完成并调用search()
JavaScript在单个线程上运行-因此,当搜索函数运行时,它还会阻止UI呈现和响应您。你应该尽可能避免在浏览器上进行持续时间超过16ms的操作,你可以在这里阅读更多关于原因的信息。
无论如何,目前有两种主要的解决方案:
- 将其移动到服务器端。您在JavaScript中运行的搜索逻辑是什么?它真的应该在客户端而不是服务器端运行吗
- 在另一个线程上执行它。你熟悉WebWorkers吗?这是一个更高级的主题,但通常它允许您在另一个线程上执行代码。它很新,在当今的浏览器中还没有得到完全支持,但您至少应该熟悉它
祝你好运。
也许不让它每次都运行,而是使用设置全局交换机
window.somevar = true;
然后在再次搜索之前检查该变量是否已设置。初始搜索完成后,显示您的结果并取消设置全局变量
delete window.somevar;
这样,函数"运行"每个击键,但不会锁定输入。
相关文章:
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 向下滚动时运行javascript
- 在Android WebView中运行Javascript-onPageFinished循环
- 在父网页的iframe中运行JavaScript
- 有条件地运行javascript函数-Razor,HTML
- 如何通过获取用户输入和使用按钮来运行JavaScript函数
- 使用c#在Web服务器上运行JavaScript方法
- 单击链接时停止运行javascript
- 在浏览器检查表单之前运行javascript onsubmit
- 如何在表单提交事件后运行JavaScript*
- Mediawiki小部件将不会运行javascript
- 有没有一种方法可以在服务器端页面加载之前在加载时运行javascript
- 在GitHub上运行JavaScript Koans
- Chrome扩展:是否有一种方法可以运行JavaScript来获取页面上的内部html,并将其保存到扩展中的变量中
- 在不加载页面的情况下运行javascript
- [AutoIt]如何使用FF.au3在FireFox上的页面中运行javascript
- 仅在屏幕媒体上运行javascript/jquery,而不是打印
- Scala提升了如何运行javascript函数并将返回值存储在变量中
- 安卓系统:通过loadUrl运行javascript时,网络视图中的视频会冻结
- 在页面加载完成之前,使用URL参数运行JavaScript