2--面試總結-深刻理解js線程進階-宏任務微任務
-
- 前言:
Event Loop即時間循環,是指瀏覽器或Node的一種解決javascript單線程運行時不會阻塞的一種機制,也就是咱們常用異步的原理
- Js運行機制
一、不一樣運行環境,js運行效果不一致
- 宏任務微任務
- 宏任務,macrotask也叫tasks。一些異步任務的回調會一次進入macro task queue,等待後續被繼續調用,這些異步任務包括:
- setTimeout
- setInterval
- setImmwsiate(Node獨有)
- I/O
- UI rendering(瀏覽器獨有)
- 微任務,microtask,也叫jobs。另外一些異步任務的回調會一次進入micro task queue,等待後續被調用,這些異步任務包括
- process.NextTick(Node獨有)
- Promise.then()
- Object.observe
- MutationObserver
- (注:這裏只針對瀏覽器和NodeJs)
- -----注意:new Promise()構造函數裏面屬於同步代碼,而非微任務
- 瀏覽器端全部的宏任務都在一個事件隊列裏執行
,每次事件隊列取出一個事件之時有微任務就把微任務執行完,而後纔開始執行事件
- 宏任務每次只取一個
- 微任務執行多個
- 微任務會放在當前時間循環的末尾
歡迎關注本站公眾號,獲取更多信息