event loop

Node的Event Loop分阶段,阶段有前后,依次是

expired timers and intervals,即到期的setTimeout/setInterval
I/O events,包含文件,网络等等
immediates,经过setImmediate注册的函数
close handlers,close事件的回调,好比TCP链接断开


同步任务及每一个阶段以后都会清空microtask队列

优先清空next tick queue,即经过process.nextTick注册的函数
再清空other queue,常见的如Promise


而和规范的区别,在于node会清空当前所处阶段的队列,即执行全部task(10以前),如今是每一个宏任务而后全部微任务

 

task主要包含:setTimeout、setInterval、setImmediate、I/O、UI交互事件

microtask主要包含:Promise、process.nextTick、MutaionObserver


宏任务:script(总体代码)、setTimeout、setInterval、I/O、事件、postMessage、 MessageChannel、setImmediate (Node.js)node

微任务:Promise.then、 MutaionObserver、process.nextTick (Node.js)浏览器



 

 浏览器线程构成:网络

  • GUI 渲染线程
  • JavaScript 引擎线程
  • 定时触发器线程
  • 事件触发线程
  • 异步 http 请求线程
相关文章
相关标签/搜索