浏览器端时间循环与nodejs端时间循环的不同之处(宏任务与微任务)

浏览器端与node端都有宏任务与微任务的概念。字面意思上看宏任务就是耗时间比较长的任务,而微任务是耗时短的任务。

在浏览器端,宏任务包括setTimeout,setInterval,微任务则包括Promise.then,里面的代码要异步运行。

浏览器端的运行方式为,每执行一次宏任务前,将微任务队列进行清空。

可以将首次初始化理解为一个宏任务,这样就更加便于分析js代码的执行顺序。

node中,微任务有Promise.then和process.nextTick,process.nextTick的优先级较高;宏任务则包括io操作、setInterval、setTimeout、setImmediate。

不同的宏任务被推进不同的执行栈,setInterval、setTimeout被推进timer栈,io操作被推进poll,setImmediate则被推进check,基本执行顺序是timers => poll栈 => check栈。

node端的运行方式为,每切换一次执行栈,就清空一次微任务,也就是说,将当前队列全部清空后,才会清空微任务。

上一篇:dubbo源码分析(一)


下一篇:Beta阶段第一次网络会议