JavaScript 作為一種單執行緒語言: 簡單提及 JavaScript 如何一次只處理一項任務,但事件循環卻讓它看起來並非如此
。 事件循環如何運作:事件循環過程中的關鍵步驟
堆疊: 呼叫堆疊管理同步程式碼。
佇列:回呼佇列保存等待執行的任務。
循環: 事件循環在
之前檢查堆疊是否為空
將任務從佇列移動到堆疊。
工作流程細分:
初始程式碼執行:
console.log('Hi'); $.get('url', function cb(data) { console.log(data); }); console.log('JSConfEU');
非同步函數呼叫($.get):
接下來,遇到 $.get('url', function cb(data) { ... }) 。此函數發起 HTTP 請求以從「url」檢索資料。
請求不會阻塞主線程,而是傳送到 Web API 環境(通常是瀏覽器的一部分)。
回呼函數(cb)被註冊為在HTTP請求完成後執行,但它不會立即執行。 HTTP 請求繼續在 Web API 部分加載,標記為 XHR (XMLHttpRequest),這通常用於處理網路請求。
移動到下一個同步行:
事件循環與任務佇列:
完成所有同步程式碼後,呼叫堆疊變空,JavaScript 等待任何非同步任務完成。
HTTP 要求完成後,回呼函數 (cb) 將從 Web API 移至任務佇列。
事件循環不斷檢查呼叫堆疊是否為空,當為空時,事件循環將任務從任務佇列移到呼叫堆疊
回呼執行:
摘要:
此流程示範了事件循環如何處理非同步程式碼
作者:
立即在呼叫堆疊上處理同步程式碼。
處理 Web API 中的非同步任務,完成後將它們移至任務佇列。
允許事件循環僅在呼叫堆疊為空時將任務移至呼叫堆疊,確保非阻塞程式碼執行。
以上是為什麼 JavaScript 永不休眠:事件循環簡單指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!