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 請求線程
相關文章
相關標籤/搜索