Bye*_*oon 3 javascript v8 node.js
Web 浏览器中的单线程、事件循环和回调的概念与 Node.js 相同?
如果是这样,是不是因为 v8 在工作中使用了这个概念(chrome 和 node.js 都使用 v8)?
v8就是这么设计的吗?
ECMA-262中 JS 的指定行为根据“代理”定义了 JS 评估,“代理”本质上是线程的抽象术语。所有主流浏览器的 JS 引擎都遵循这个规范,显然 Node.js 使用与 Chromium 相同的引擎。
执行上下文堆栈(简单来说)处理函数调用,其范围仅限于代理,因此您无法真正在多线程环境中使用 JS。
这就是为什么 Web Workers 不能传递对象,而是使用结构化克隆。
ECMA-262 中也定义了事件循环的概念,具有RunJobs()以及作业和作业队列的组合行为。作业队列也仅限于代理,因此它们无法处理多线程环境。
目前,Promise 是 ECMA-262 中定义的唯一使用作业队列的东西(Promise 处理程序总是在新的刻度中运行),但 Node.js 和浏览器大量使用 IO 事件循环。
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |