1. 程式人生 > 其它 >JavaScript Event Loop事件迴圈

JavaScript Event Loop事件迴圈

JS是單執行緒的語言,它的非同步同步是通過Event Loop實現的,分為三個棧,呼叫棧、訊息佇列(巨集任務)、微任務。

js執行的時候呼叫DOM遇到第一個函式的時候會把函式壓入棧。

function fn2(){
            console.log(2)
        }
fn2()

fu2()會壓入棧 執行function fn2()輸出console.log(2)後棧彈出

var p = new Promise (resolve=>{
            console.log(5)   //5
            resolve()
        })
        p.then(
function(){ console.log(3) //3 }) function fn2(){ console.log(2)
       setTimeout(()=>{console.log(6)}) //6 } fn2()

遇到promise 會把new promise壓入棧中輸出5 再把resolve()壓入棧中,將p.then裡的console.log(3)匯入微任務中,執行fn2輸出2後把setTimeout壓入訊息佇列中,再執行微任務裡的console.log(3),微任務執行完畢後也就是輸出3後,在執行console.log(6),最後彈出。 這就是js單執行緒執行順序