Javascript 据说是单线程的。假设当前堆栈上有一些 CPU 密集型函数:
function calculatePi(decimalPlaces) {
// Currently there is calatePi(10000000) on the stack,
// which computes for 10 seconds.
}
现在一些其他事件到达,例如用户单击按钮或 HTTP 响应可用,这会导致将新消息与关联的回调一起放入消息队列中。
当堆栈上还有事情要做时,Javascript 引擎如何将此消息放入消息队列中?
如果它能做到这一点,则意味着引擎不是单线程的。如果它不能做到这一点,第二个事件就会丢失。
最佳答案
您的 JavaScript 代码在事件循环中按顺序执行(就像在单个线程上一样)。
没有人说过管理事件队列的引擎必须是单线程的。
关于javascript - 当堆栈上还有事情要做时,Javascript 如何将新消息放入队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35126986/