script settimeout setinterval messagechannel postmessage setimmediate requestanimationframe i/o操作 ui渲染
process.nexttick mutationobserver promise.then
主線程script>
微任務process.nexttick>promise>
巨集任務settimeout>setinterval>setimmediate>i/o>ui rendering
mouse click , keypresses, network events
主線程script執行完=> 執行所有微任務=> 執行棧中第乙個巨集任務=> 執行所有微任務=> 執行棧中第乙個巨集任務=>…
舉個例子,列印順序就是數字順序:
settimeout((
)=> console.
log(2)
,0);
settimeout((
)=>);
console.
log(5)
});settimeout((
)=> console.
log(8)
,0);
},0)
;settimeout((
)=> console.
log(7)
,0);
promise.
resolve()
.then((
)=>);
>console.log(0)); //瀏覽器環境注釋此句
關注下再走唄 +_+ 巨集任務與微任務
之前我們討論過js 執行的同步和非同步,js的單執行緒執行機制不會改變 但是僅僅懂得同步非同步是遠遠不夠的 比如說下面這些 1 settimeout function 4new promise function resolve,reject then function 10 console.log ...
巨集任務與微任務
js是單執行緒,所以也可以說是主線程,所以js 都是在主線程執行的,只不過我們要區分它是同步執行還是非同步執行 當乙個 是非同步的話,對應的是 函式。不同的任務對應不同的 比如 定時器的 傳送js的 對應事件的 定時器模組,網路請求模組,事件處理模組,的執行取決於模組什麼時候將 函式放入到事件佇列e...
JS微任務和巨集任務
1.巨集任務 包括整體 script,settimeout,setinterval i o ui 互動事件 setimmediate node.js 環境 2.微任務 promise mutaionobserver process.nexttick node.js 環境 promise.resolv...