事件循环何时开始?

时间:2018-10-28 18:58:43

标签: node.js event-loop

我最近开始弄清楚什么是事件循环,这让我很困惑,好像我不知道nodejs的工作方式。 我的意思是,程序启动时会加载到内存中-接下来是什么?

我看不到事件循环中所有同步的地方。代码会执行(例如for / while循环会计算某些内容)..这是否意味着V8执行JavaScript并在需要时启动事件循环?

如果有人可以帮助并解释nodejs运行时如何在高层运行,那真是太好了

1 个答案:

答案 0 :(得分:0)

我强烈建议您阅读此Asynchrony: Now & Later

我将引用一些我曾经读过的东西。

........

JS Engine对异步代码一无所知,它一次只能执行代码并完成。

JS主机环境是实现了事件循环概念的环境,在该环境中,现在(将来)不需要运行的代码正在等待(想象一个网络调用/ io调用)来完成处理并被调用(被添加到事件循环的事件队列中,然后在下一个滴答处执行)

我在程序启动时100%确信,但是我认为所有代码都已添加到事件队列(事件循环的实现方式)中,并作为先进先出(FIFO)处理,这意味着较早的代码会先执行,而在运行时是否需要停止某些代码(如setTimeout或IO进程或Ajax调用(都需要时间),则取决于它们使用例如回调来调用(此处为回调被添加到事件队列中),执行这些回调以使它们在下一个将来的时刻到达时是事件循环的责任。