事件循環是 JavaScript 執行時期環境的核心元件,對於執行非同步任務至關重要。它持續監控兩個主要結構:呼叫堆疊和事件佇列。
呼叫堆疊是一種後進先出(LIFO)資料結構,用於儲存目前正在執行的函數。當一個函數被呼叫時,它被加到堆疊的頂部。一旦函數完成,它就會從堆疊中刪除。
Web API 處理非同步操作,例如 setTimeout、取得請求和 Promise。這些操作被卸載到 Web API 環境,讓主執行緒繼續執行其他程式碼。
作業佇列,也稱為微任務佇列,是先進先出(FIFO)結構。它包含準備執行的 async/await、promise 和 process.nextTick() 的回呼。微任務具有更高的優先級,並在巨集任務之前處理。
任務佇列,或者說巨集任務佇列,也是一個 FIFO 結構。它包含準備執行的非同步操作(例如 setInterval 和 setTimeout)的回調。巨集任務在微任務之後處理。
事件循環不斷檢查呼叫堆疊以查看它是否為空。如果呼叫堆疊為空,則事件循環首先尋找作業佇列。如果作業佇列中有任何回調,它們就會出隊並推送到呼叫堆疊上執行。一旦作業佇列為空,事件循環就會檢查任務佇列並處理那裡的任何回呼。
這是一個簡單的視覺化,可以幫助您理解過程:
以上是了解 JavaScript 事件循環:初學者指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!