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

ScreenClip.png