javascript - 当堆栈上还有事情要做时,Javascript 如何将新消息放入队列

标签 javascript node.js

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/

相关文章:

javascript - 在 Intellij idea 中扩展 javascript 'class' 的最佳方法

node.js - 多次/循环请求 REST API 时处理连接丢失(客户端)

javascript - Angular/ express : Redirecting to the last page visited after logging in

node.js - Node 的 console.log() 输出一个对象的信息。如何将其输出到文件?

javascript - jquery在ajax调用中发送表单数据和json对象

javascript - 在 JavaScript 中格式化 getDate()

javascript - 在javascript中选择性地填充数组

.net - 渲染 Excel 文件

javascript - Strongloop EmbedsMany helper 方法未找到

node.js - 如何配置node-fetch以使用公司代理?