1.巨集任務:包括整體**script,settimeout,setinterval、i/o、ui 互動事件、setimmediate(node.js 環境);
2.微任務:promise、mutaionobserver、process.nexttick(node.js 環境)
promise.resolve().then(()=>,0)
})settimeout(()=>)
},0)
13421(紅色):js 引擎會把微觀任務promise存入執行棧,把巨集觀任務settimeout存入 「任務佇列」
2(綠色):主線程率先執行執行棧中的**,依次輸入1,然後把綠框的settimeout存入 「任務佇列」
3(藍色):執行棧清空以後,會率先讀取 「任務佇列」 中最早存入的settimeout(紅框的那個),並把這個定時器存入棧中,開始執行。這個定時器中的**都是微觀任務,所以可以一次性執行,依次輸出3 和 4
4(紫色):重複第3步的操作,讀取 「任務佇列」 中最後存入的settimeout(綠框的那個),輸出2
js的巨集任務和微任務
script 主程式 settimeout setinterval setimmediate i o操作 ui渲染 requestanimationframe promise 原生 mutationobserver process.nexttick mutation object.observe 事...
巨集任務和微任務
概念 1.巨集任務 當前呼叫棧中執行的 成為巨集任務。主 快,定時器等等 3.巨集任務中的事件放在callback queue中,由事件觸發執行緒維護 微任務的事件放在微任務佇列中,由js引擎執行緒維護。執行機制02 1.在執行棧中執行乙個巨集任務。2.執行過程中遇到微任務,將微任務新增到微任務佇列...
巨集任務和微任務
1.巨集任務 分類 settimeout setinterval requrestanimationframe 1 巨集任務所處的佇列就是巨集任務佇列 2 第乙個巨集任務列中只有乙個任務,執行主線程的js 3 巨集任務佇列可以有多個 2.微任務 分類 new promise then process...