28
我读过this和this,看着this ...Node.js的事件循环理解(有图)
我做的我是如何理解的图示:
- Javascript回调(函数)可以存在于
current queue
,check queue
,close callbacks queue
,timers queue
和I/O callbacks queue
中。 - Js代码一次只能从
current queue
一个函数(任务/作业)执行。 - 此时执行的Js代码可以将微任务(作业)添加到
current queue
以在其自身和宏任务(任务)之后执行到check queue
。它只能通过要求API来完成,才能将任务添加到其他队列中。 Idle, prepare
阶段用于某些内部节点js业务(也许像垃圾回收)。Poll
阶段轮询线程池中的线程并使用适当的回调来填充队列。Idle, prepare
和poll
阶段没有与它们关联的js回调队列。- (四)
thread pool
中的主题都是完全相同的,没有专业化。 - 事件循环从每个队列中逐个取出并执行任务,直到它为空,然后移至下一个队列。
- 队列中的任务没有任何与其关联的作业(微服务)。作业仅在执行任务或其他作业期间创建,并且仅存在于
current task queue
中。
这是理解权还是我错过了什么?
MS Power Point .pptx文件中的图可以找到here。
这看起来过于复杂的我。也许是这样,但是在编写代码时不是一个简单的模型吗?我认为没有必要了解所有细节。仅仅知道当前滴答的队列,下一个滴答的队列和等待定时器或I/O的回调是不够的。 –
我不能回答这个问题,但我真的很感谢你把你的问题的努力。 – georg
@LorenzMeyer一个简单的模型就足以写代码,但我仍想知道的引擎盖下是什么。乔治,谢谢:) – grabantot