什麼是事件循環?

事件循環是一種在 JavaScript 中的機制,允許運行時處理非同步操作。它確保 JavaScript 在單執行緒環境中保持響應性且無阻塞,通過管理多個任務的執行。

事件循環如何運作?

  1. 單執行緒執行: JavaScript 是 單執行緒,這意味著它一次只能執行一個任務。這由 呼叫堆疊 管理,函數以 同步 的方式執行(也就是一個接著一個)。

  2. 呼叫堆疊: JavaScript 中的主要線程,用於執行同步代碼。它跟踪當前正在執行的函數。

把呼叫堆疊想像成一疊盤子。
每當呼叫一個函數,
一個新的盤子(函數)就會被添加到堆疊上。
當一個函數完成時,
它的盤子(函數)會從堆疊上移除。
  1. 網頁 API: 對於像 setTimeoutHTTP 請求fetchDOM 事件 這樣的非同步操作,JavaScript 使用瀏覽器提供的網頁 API。這些操作是在呼叫堆疊之外處理的。

  2. 回呼佇列: 當一個非同步操作完成時,回呼函數會被添加到回呼佇列。這個佇列會等待直到呼叫堆疊清空,然後將回呼函數推送到呼叫堆疊中執行。

  3. 事件循環: 事件循環不斷檢查呼叫堆疊和回呼佇列。如果呼叫堆疊是空的,它將第一個函數從回呼佇列移到呼叫堆疊中進行執行。

  4. 微任務佇列: 對於 Promise 和變異觀察者,JavaScript 維護一個名為微任務佇列的獨立佇列。微任務的優先級高於回呼佇列的任務。事件循環首先檢查微任務佇列,然後是回呼佇列。

這就是事件循環的簡要介紹!它是 JavaScript 運行時環境的一個關鍵部分,確保非同步操作被有效處理,並使應用程序保持響應。


原文出處:https://dev.to/bhataasim/event-loop-in-2-minutes-5895


共有 0 則留言