輝太郎看前端 js非同步巨集任務和微任務

2021-10-16 22:15:00 字數 1469 閱讀 9979

前言

巨集任務:settimeoutsetintervalajaxdom事件

微任務:promiseasync/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...