首页 > 解决方案 > 每个事件循环处理多少个 JS 语句?

问题描述

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

标签: javascriptnode.jsevent-loop

解决方案


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

不,那里没有。

在 node.js 架构中,当从事件队列中拉出事件时,它与回调绑定。解释器调用该回调并且该回调运行完成。只有当它返回并且堆栈再次为空时,它才会检查事件队列中是否有另一个事件要运行。

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

所以,它是这样的:

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

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


推荐阅读