前言
巨集任務:同步和非同步settimeout
,setinterval
,ajax
,dom
事件微任務:
promise
,async/await
。優先順序:
微任務
執行要比巨集任務
要早。注:
同步任務會和微任務按照出場順序先後執行,最後執行巨集任務
。
console.
log(
'123'
)alert
('阻塞'
)console.
log(
'等待中。。。。'
)
console.
log(
'1')
//計時器
settimeout((
)=>
,5000
)console.
log(
'2')
任務列隊和event loop(事件迴圈)單執行緒就意味著,所有的任務都要排隊,前乙個結束,才會執行後面的任務。如果列隊是因為計算量大,cpu忙不過來,倒也算了。但是更多的時候,cpu是閒置的,因為io裝置處理得很慢,例如ajax讀取網路資料。js設計者便想到,主線程完全可以不管io裝置,將其掛起,然後執行後面的任務。等後面的任務結束掉,在反過頭來處理掛起的任務。
同步任務會和微任務按照出場順序先後執行,最後執行巨集任務
//第乙個執行
console.
log(
'---start---');
//第一輪主線程
settimeout((
)=>,0
);newpromise
((resolve, reject)
=>).
then((
)=>);
//第三個執行
console.
log(
'---end---');
//第一輪主線程結束
// 巨集任務佇列 1
settimeout((
)=>,0
)new
promise
(resolve =>).
then((
)=>)}
,0)settimeout((
)=>,0
)console.
log(
'********** sync queue **********'
)
初出茅廬,請各位大佬多多關照?! js同步(微任務 巨集任務)非同步任務
console.log 1 settimeout 0 new promise resolve,reject then data console.log 2 檢視輸出結果 瀏覽器與node 上述 可以看出執行順序,同步任務 先執行巨集任務,在執行微任務 遍歷非同步佇列,執行非同步任務 settimeo...
前端急速解決非同步之微任務和巨集任務
首先看下列 的執行結果 console.log 1 process.nexttick function settimeout function promise.resolve then function then function 複製 同步任務 微任務 巨集任務的執行優先順序如下 同步任務 微任務...
JS微任務和巨集任務
1.巨集任務 包括整體 script,settimeout,setinterval i o ui 互動事件 setimmediate node.js 環境 2.微任務 promise mutaionobserver process.nexttick node.js 環境 promise.resolv...