如何让UI线程连续运行

时间:2016-01-22 19:51:47

标签: javascript asynchronous javascript-events

据我所知,因为JavaScript是单线程的,所以像

这样的动作
setTimeout(0, function() { alert("Hello"); });

不会阻止UI线程,会等到UI线程中断,以便它可以跳过"跳入"并运行。这是旧的JavaScript说法

  

"如果无事可做,请检查[回调]队列。但是只有   在没有任何事情要做时检查队列。"

我所说的是,有人可以向我展示一个浏览器总是有事可做的例子,因此回调队列中的异步方法永远不会被执行吗?或者我对事件循环的理解完全扭曲了?

1 个答案:

答案 0 :(得分:2)

正如您所指出的,当浏览器没有其他任何操作时,回调就完成了。如果从未运行过回调,则用户会认为浏览器没有响应。这种可能的情况虽然不太可能被认为是正常的。

假设您的超时回调将会发生,实现您的代码是完全正确的。你想要做的是创建一个容忍一些时间差异发生的回调的实现。方差与处理其他回调和事件所花费的最长时间有关。