一 概念promise
1. 宏任務:當前調用棧中執行的代碼成爲宏任務。(主代碼快,定時器等等)。線程
2.微任務: 當前(這次事件循環中)宏任務執行完,在下一個宏任務開始以前須要執行的任務,能夠理解爲回調事件。(promise.then,proness.nextTick等等)。隊列
3. 宏任務中的事件放在callback queue中,由事件觸發線程維護;微任務的事件放在微任務隊列中,由js引擎線程維護。事件
二. 運行機制渲染
1. 在執行棧中執行一個宏任務。循環
2. 執行過程當中遇到微任務,將微任務添加到微任務隊列中。定時器
3. 當前宏任務執行完畢,當即執行微任務隊列中的任務。queue
4. 當前微任務隊列中的任務執行完畢,檢查渲染,GUI線程接管渲染。call
5. 渲染完畢後,js線程接管,開啓下一次事件循環,執行下一次宏任務(事件隊列中取)。next