NodeJs的Event Loop
我们之前谈过浏览器的Event Loop: https://www.cnblogs.com/amiezhang/p/11349450.html 简单来说,就是每执行一个宏任务,就去执行微任务队列,直到清空,再执行下个宏任务。 那么NodeJs的Event Loop是怎么样的呢? NodeJS的Event Loop NodeJs的Event Loop其实也分了宏任务和微任务 不同的是,不是每执行一个宏任务就回去清空一次微任务队列,可能是连着执行好几个才去清空一次微任务队列。 例子: setTimeout(()=>{ console.log(1); new Promise(resolve=>resolve()).then(()=>console.log(3)) }) setTimeout(()=>{console.log(2)}) 同一个例子,在浏览器和Node环境下,输出不一致。 浏览器: NodeJs: 可以看出: 浏览器 在执行第一个 setTimeout 宏任务时,往微任务队列推了一个 console.log(3 ),所以在执行完第一个setTimeout后,浏览器的 Event Loop 机制马上去执行微任务队列,然后再执行下个setTimeout宏任务 NodeJs 在执行第一个 setTimeout 宏任务时,也往微任务队列推了一个 console.log(3)