1. 程式人生 > 實用技巧 >執行機制

執行機制

主執行緒執行的時候,產生堆(heap)和棧(stack),棧中的程式碼呼叫各種外部API,它們在"任務佇列"中加入各種事件(click,load,done)。只要棧中的程式碼執行完畢,主執行緒就會去讀取"任務佇列",依次執行那些事件所對應的回撥函式.

js是單執行緒語言,他的非同步和多執行緒實現,是通過event loop事件迴圈機制來實現的。
大體由下面這三部分組成:
開始時會從全域性程式碼開始一行一行執行,遇到函式呼叫會把它壓入呼叫棧中,執行後函式會彈出;
而js中的非同步操作,如....等;在執行後,裡面的回撥函式會入隊到訊息佇列(任務佇列)中,成為訊息;訊息會在呼叫棧清空的時候執行;

而使用promise的非同步操作,會加入微任務佇列中,它會在呼叫棧被清空的時候立即執行;並且處理期間,新加入的微任務也會一同執行
在這裡插入圖片描述

js是一個單執行緒,同一時間只能做一件事情,碰到有些事情耗時間特別長,但是不能一直耗在那裡(非同步),所以先做別的事情。
巨集任務:script(整體程式碼),setimeout,setInterval,I/O,requestAnimationFrame,UI rendering
微任務:promise

微任務一直跟在當前巨集任務的後面

深入理解JavaScript事件迴圈機制