【发布时间】:2014-09-09 17:49:20
【问题描述】:
Philip Roberts 出色地解释了浏览器事件循环here,在调用堆栈、事件循环、任务队列以及像 webapis 这样的“外部”线程之间提供了清晰的解释。我的问题是这些并行节点事件循环中的等效组件,它们被称为基本相同的东西。也就是说,当我使用 Node 的文件和 web i/o 库进行调用时,这些都是在堆栈之外发生的事情,其回调在任务队列中排队?
【问题讨论】:
-
是的,核心思想是一样的。 node.js 使用 Chrome 的 JS 引擎。
-
@apsillers 同意。我只是想确定是否有任何重大的概念差异需要注意。
-
一个浏览器可能有多个事件循环(对于JS,对于DOM等),但是概念是一样的,是的。
-
@dandavis node.js 确实使用了 Chrome 的 JS 引擎 V8,但事件循环不是 V8 的一部分。 Node 使用基于 C++ 库 libuv 的事件循环,而 Chrome 则基于 libevent。 Deno 使用基于 Rust 的 tokIO
-
@dandavis 我同意。但它们“基本相同”的原因并不是因为它们都使用 V8。它与 Firefox 或 Deno 一样“基本相同”。它们“基本相同”的原因是它们的事件循环实现相似
标签: javascript node.js dom-events