基本介紹
- 堆:存放了大量的非結構化數據,比如變量,對象等
- 調用桟:會記錄素有的函數調用信息,當我們調用某個函數式,會將其參數與局部變量等壓入桟中
- 隊列:包含了一些列帶處理的信息與相關聯的回調函數
- javascript主線程只擁有一個函數調用桟和一個任務隊列
什么是異步
在 Web 開發中,我們常常會需要處理網絡請求等相對較慢的操作,如果將這些操作全部以同步阻塞方式運行無疑會大大降低用戶界面的體驗。另一方面,我們點擊某些按鈕之后的響應事件可能會導致界面重渲染,如果因為響應事件的執行而阻塞了界面的渲染,同樣會影響整體性能。實際開發中我們會采用異步回調來處理這些操作,這種調用者與響應之間的解耦保證了 JavaScript 能夠在等待異步操作完成之前仍然能夠執行其他的代碼。Event Loop 正是負責執行隊列中的回調并且將其壓入到函數調用棧中
圖解
ScreenClip.png