微任務和宏任務的區別


概念  

1. 宏任務:當前調用棧中執行的代碼成為宏任務。(主代碼快,定時器等等)。 

2.微任務: 當前(此次事件循環中)宏任務執行完,在下一個宏任務開始之前需要執行的任務,可以理解為回調事件。(promise.then,proness.nextTick等等)。 3. 宏任務中的事件放在callback queue中,由事件觸發線程維護;微任務的事件放在微任務隊列中,由js引擎線程維護。

運行機制

1. 在執行棧中執行一個宏任務。 

2. 執行過程中遇到微任務,將微任務添加到微任務隊列中。

3. 當前宏任務執行完畢,立即執行微任務隊列中的任務。 

4. 當前微任務隊列中的任務執行完畢,檢查渲染,GUI線程接管渲染。 

5. 渲染完畢后,js線程接管,開啟下一次事件循環,執行下一次宏任務(事件隊列中取)。

微任務:process.nextTick、MutationObserver、Promise.then catch finally

宏任務:I/O、setTimeout、setInterval、setImmediate、requestAnimationFrame


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM