站長資訊網
最全最豐富的資訊網站

nodejs事件循環幾個階段是什么

nodejs事件循環的階段:1、timers(定時器)階段;2、pending callbacks階段;3、idle、prepare階段;4、poll(輪詢)階段;5、check(檢查)階段;6、close callbacks階段。

nodejs事件循環幾個階段是什么

本教程操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。

nodejs事件循環

當Node.js啟動時會初始化event loop,每一個event loop都會包含六個循環階段,nodejs時間循環和瀏覽器的事件完全不一樣。

nodejs事件循環幾個階段是什么
注意:圖中的每個方框被稱作實踐循環的一個階段(phase),這6個階段為一輪事件循環。

階段概括

  • timers(定時器): 此階段執行那些由setTimeout()setInterval() 調度的回調函數。
  • pending callbacks(I/O回調): 此階段會執行幾乎所有的回調函數,除了close callbacks(關閉回調)和那些由timerssetImmediate() 調度的回調。
    setImmediate約等于setTimeout(callback,0)
  • idle(空轉),prepare: 此階段只在內部使用。
  • poll(輪詢): 檢索新的I/O事件;在恰當的時候Node會阻塞在這個階段。
  • check(檢查): setImmediate()設置的回調會在此階段被調用。
  • close callbacks(關閉事件的回調): 諸如socket.on(‘close’,…)此類的回調在此階段被調用。

在事件循環的每次運行之間,Node.js會檢查它是否在等待異步I/O或定時器,如果沒有的話就會自動關閉。

如果event loop進入了poll階段,且代碼沒設定timer,將會發生下面情況:

  • 如果poll queue不為空,event loop將同步的執行queue里的callback,直至queue為空,或執行的callback到達系統上限;
  • 如果poll queue為空,將會發生下面情況:
    – 如果代碼已經被setImmediate()設定了callback,event loop將結果poll階段進入check階段,并執行check階段的queue(check階段的queue是setImmediate設定的)。
    – 如果代碼沒有設定setImmediate(callback),event loop將阻塞在該階段等待callback加入poll queue,一旦到達就立即執行。

如果event loop進入了poll階段,且代碼設定了timer:

  • 如果poll queue進入空狀態時(既poll階段為空閑狀態),event loop將檢查timers,如果有1個或多個timers時間時間已經到達,event loop將按循環順序進入timer階段,并執行timer queue。

【推薦學習:《nodejs 教程》】

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
在线观看精品国产福利片100| 国产2021精品视频免费播放| 国产精品综合久成人| 国产精品日韩深夜福利久久| 精品人妻无码一区二区色欲产成人| 精品人妻大屁股白浆无码| 久久久久99精品国产片 | 精品熟女少妇a∨免费久久| 国产成人精品无码一区二区| 中文字幕久精品免费视频| a级国产精品片在线观看| 精品国产91久久久久久久a | 国精品无码一区二区三区左线| 久久国产综合精品五月天| 国产精品亚洲αv天堂无码 | 久久成人国产精品免费软件| 久久久精品国产sm调教网站| 久久久免费的精品| 国产成人精品无码一区二区| 久久福利青草精品资源站| 538prom精品视频线放| 亚洲精品无码永久中文字幕 | 在线精品国精品国产不卡| 国产精品资源一区二区| 国产精品国产三级国产在线观看| 无码A级毛片日韩精品| 在线亚洲精品视频| 国产大陆亚洲精品国产| 国产日韩久久免费影院| 日韩精品无码一区二区视频| 久久久无码精品亚洲日韩软件| 日韩精品电影一区亚洲| 日韩精品一区二区午夜成人版 | 精品在线一区二区| 亚洲国产精品成人网址天堂| 日韩在线看片免费人成视频播放 | 97精品国产91久久久久久久| 久久伊人精品一区二区三区| 精品乱码一区二区三区四区| 国产精品视频网站| 亚洲av永久无码精品网址|