動視:未來三部《使命召喚》新作仍將登陸PS平臺
阿新 • • 發佈:2022-01-26
基礎概念
主執行緒:js引擎執行的執行緒,執行初始化程式碼(頁面渲染、函式處理等)
工作執行緒:也稱幕後執行緒,這個執行緒可能存在於瀏覽器或js引擎內,與主執行緒是分開的,處理檔案讀取、網路請求等非同步事件。
Event Loop(事件迴圈):同步任務會直接在主執行緒中進行執行,而非同步任務由工作執行緒進行處理,然後放入任務佇列(event queue)中。主執行緒中的任務全部完畢以後,再去讀區任務佇列中的任務(依照先進先出的規則),推入主執行緒中進行執行。
tick(指程式碼需要執行幾遍)的步驟
每次事件迴圈操作稱為tick,其步驟如下:
1.在此次 tick 中選擇最先進入佇列的任務( oldest task ),如果有則執行(一次)
2.檢查是否存在 Microtasks(微任務) ,如果存在則不停地執行,直至清空Microtask Queue(微任務佇列)
3.更新 render
4.主程式重複執行上述的步驟
巨集任務和微任務
task分為
1.巨集任務(Macro Task/Task)每個巨集任務結束之後要清空所有的微任務。
script( 整體程式碼)、setTimeout、setInterval、I/O、UI 互動事件、setImmediate(Node.js 環境)
2.微任務(Micro Task)
Promise、MutaionObserver、process.nextTick(Node.js 環境)