JS里面的事件循环+Node里面的事件循环_JS

JS里面的事件循环,跟JS的单线程的处理机制息息相关,它把js代码处理成任务里的frame,按照如图的分类,划分进去分轮次的宏任务和微任务队列里面。

宏任务仔细划分的话,包括的就是主调用栈和消息队列,代码优先推入调用栈,遇到定时器,promise.then()等之类的函数会推入消息队列和微任务队列

 

如果调用栈里面的代码执行完了,开始执行微任务队列里面的任务,接着执行消息队列里面的任务(可以理解为第二轮的宏任务)。

JS里面的事件循环+Node里面的事件循环_JS_02

 

 

 就如这个题目(源自 https://www.bilibili.com/video/BV1my4y1773Y/?p=3&spm_id_from=pageDriver),

我第一次做题的时候也没有找到正确的顺序,new Promise里面的setTimeout确实具有强大的误导性,实际上它会在第一个promise的then执行(第二轮的微任务队列)结束的时候再开始进行,

然后把它自身的children6推进去最后一轮的微任务队列中,再children7之后执行