据我了解,因为 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/