28
我讀過this和this,看着this ...Node.js的事件循環理解(有圖)
我做的我是如何理解的圖示:
- Javascript回調(函數)可以存在於
current queue
,check queue
,close callbacks queue
,timers queue
和I/O callbacks queue
中。 - Js代碼一次只能從
current queue
一個函數(任務/作業)執行。 - 此時執行的Js代碼可以將微任務(作業)添加到
current queue
以在其自身和宏任務(任務)之後執行到check queue
。它只能通過要求API來完成,才能將任務添加到其他隊列中。 Idle, prepare
階段用於某些內部節點js業務(也許像垃圾回收)。Poll
階段輪詢線程池中的線程並使用適當的回調來填充隊列。Idle, prepare
和poll
階段沒有與它們關聯的js回調隊列。- (四)
thread pool
中的主題都是完全相同的,沒有專業化。 - 事件循環從每個隊列中逐個取出並執行任務,直到它爲空,然後移至下一個隊列。
- 隊列中的任務沒有任何與其關聯的作業(微服務)。作業僅在執行任務或其他作業期間創建,並且僅存在於
current task queue
中。
這是理解權還是我錯過了什麼?
MS Power Point .pptx文件中的圖可以找到here。
這看起來過於複雜的我。也許是這樣,但是在編寫代碼時不是一個簡單的模型嗎?我認爲沒有必要了解所有細節。僅僅知道當前滴答的隊列,下一個滴答的隊列和等待定時器或I/O的回調是不夠的。 –
我不能回答這個問題,但我真的很感謝你把你的問題的努力。 – georg
@LorenzMeyer一個簡單的模型就足以寫代碼,但我仍想知道的引擎蓋下是什麼。喬治,謝謝:) – grabantot