CNode

刚学习nodeJS,请问这里打印顺序是什么?能解释一下吗

问答
Sshileima发布于8 年前最后回复8 年前3 回复2908 浏览0 收藏

微信图片_20180418142121.png 这里执行打印的顺序不明白

查看回复

回复 (3)

N
nnliang#1·8 年前

为什么要贴图,能上代码吗?

跑一下不就知道

S
scarletmu#3·8 年前

这个牵扯到Node本身的消息循环模式了,这几个函数的执行Phase不尽相同 先执行的是5-->3-->4-->1-->2 整个循环中setTimeout是第一个TimerPhase执行的,settImmediate是倒数第二个check阶段执行的,但是第一轮循环等于只注册了这两个事件,没有执行,所以他们并没有先执行。 5是立即执行因此第一个会被log,nextTick()和Promise的回调是整个队列中一直在每个Phase之后等待执行的,然后Promise的回调始终在nextTick之后,因此log顺序是3-->4。 这样循环转到第二圈,再执行之前注册好的事件,因此log 1-->2

参与回复
登录后即可参与回复。登录