在检查事件队列/每个滴答/每个循环之前是否有一定数量的指令语句被处理(我认为是说同样的事情?)
最佳答案
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 片段之间没有时间切片,这听起来像是你的问题可能正在预料到的。一旦调用了与事件队列中的偶数相对应的回调,该回调就会运行直到完成并将控制权返回给解释器。
所以,事情是这样的:
- 从事件队列中提取事件
- 调用与该事件关联的 Javascript 回调
- Javascript 回调运行直至完成,然后从回调返回
- node.js 内部检查事件队列中的下一个事件。如果存在事件,请转到步骤 1 并重复
- 如果没有事件,则进入休眠状态,直到有事件放入事件队列。
实际上,这有点简化,因为有几种不同类型的事件队列具有优先级顺序,其中一个先进入,但这描述了与您的问题相关的一般过程。
关于javascript - 每个事件循环处理多少个 JS 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013820/