javascript - 每个事件循环处理多少个 JS 语句?

标签 javascript node.js event-loop

在检查事件队列/每个滴答/每个循环之前是否有一定数量的指令语句被处理(我认为是说同样的事情?)

最佳答案

Is there a set number of instructions that get processed before checking the event queue/per tick/per loop (ways of saying the same thing, I think?)

不,没有。

在node.js架构中,当从事件队列中提取事件时,它会绑定(bind)到回调。解释器调用该回调并且该回调运行至完成。仅当它返回并且堆栈再次为空时,它才会检查事件队列中是否还有另一个事件要运行。

所以,它与许多指令完全无关。 node.js 将你的 Javascript 作为单线程运行,因此 Javascript 片段之间没有时间切片,这听起来像是你的问题可能正在预料到的。一旦调用了与事件队列中的偶数相对应的回调,该回调就会运行直到完成并将控制权返回给解释器。

所以,事情是这样的:

  1. 从事件队列中提取事件
  2. 调用与该事件关联的 Javascript 回调
  3. Javascript 回调运行直至完成,然后从回调返回
  4. node.js 内部检查事件队列中的下一个事件。如果存在事件,请转到步骤 1 并重复
  5. 如果没有事件,则进入休眠状态,直到有事件放入事件队列。

实际上,这有点简化,因为有几种不同类型的事件队列具有优先级顺序,其中一个先进入,但这描述了与您的问题相关的一般过程。

关于javascript - 每个事件循环处理多少个 JS 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013820/

相关文章:

javascript - 删除 Google 文档中的空行

javascript - 如何从 javascript 中包含 2 个或更多项目的值获取数据

javascript - NodeJS 事件循环中的 process.nextTick() 何时被调用?

node.js - 无法在 Angular 2 应用程序中更改 lite-server 的基本文件夹

node.js - Mongoose:按日期运行计划作业查询

javascript - 我不完全理解 JavaScript 线程

c - 检测当前线程是否是 libuv 默认事件循环的主线程

javascript - 如何拒绝drop事件?

javascript - 如何在 VueJS 自定义过滤器结果上应用函数/运算符?

javascript - 当前聚合的 MongoDB Node Driver Count