javascript - 如何让UI线程持续运行

标签 javascript asynchronous dom-events

据我了解,因为 JavaScript 是单线程的,所以像这样的操作

setTimeout(0, function() { alert("Hello"); });

不会阻塞 UI 线程,会等到 UI 线程中断,以便它可以“跳入”并运行。这是 JavaScript 的老说法

"When there's nothing to do, check the [callback] queue. But only check the queue when there's nothing to do."

我的意思是,有人能给我举一个例子,其中浏览器总是有事情要做,因此回调队列中的异步方法永远不会被执行吗?或者我对事件循环的理解完全扭曲了?

最佳答案

正如您所指出的,回调是在浏览器无事可做时完成的。如果回调从未运行,用户会认为浏览器没有响应。这是一种可能的情况,但不太可能被视为正常情况。

假设超时回调将会发生,那么实现您的代码是完全可以的。您想要做的就是创建一个能够容忍出现一些时间差异的回调的实现。该差异与处理其他回调和事件所花费的最长时间有关。

关于javascript - 如何让UI线程持续运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34954803/

相关文章:

c# - 我怎样才能等待最短时间?

javascript - 在事件触发时识别 HTML 元素

javascript - Firefox XMLHttpRequest 在 302 响应上设置错误标志

javascript - 将 Observables 链接到 ajax 调用的队列列表

asynchronous - Inno Setup 中的异步 WMI 查询

javascript - 拒绝 keyDown 事件上的 "control"键

javascript - 如何在 Tableau 中自定义 PDF?

javascript - EventTarget.addEventListener() 的 useCapture 参数使用?

javascript - 如何将 $rootScope 注入(inject) AngularJS 单元测试?

javascript - 在 html 文档中从 javascript 调用变量