JS的執行機制

2021-09-29 15:57:56 字數 2054 閱讀 6161

js是瀏覽器指令碼語言,用於與使用者互動、操作dom,注定只能是單執行緒的。h5允許jd建立多個執行緒,但是子執行緒完全受主線程控制,且不得操作dom。

話不多說,就簡單的舉例幾個(乾貨)

async function async1() 

async function async2()

console.log('script start');

settimeout(function() , 0)

async1();

new promise(function(resolve) ).then(function() );

console.log('script end');

//執行順序

//script start ==>async1 start==>async2==>promise1==>script end==>async1 end==> promise2==>settimeout

w: async1 end promise2

h:settimeout

async function async1() 

async function async2() ).then(function() );

}console.log('script start');

settimeout(function() , 0)

async1();

new promise(function(resolve) ).then(function() );

console.log('script end');

//執行順序

//script start==>async1 start==>promise1==> promise3==>script end==>promise2==>async1 end ==>promise4==>settimeout

w:promise2 async1 end promise4

h:settimeout

async function async1() ,0)

}async function async2() ,0)

}console.log('script start');

settimeout(function() , 0)

async1();

new promise(function(resolve) ).then(function() );

console.log('script end');

//執行順序

// script start==>async1 start==> promise1==>script end==>promise2==>settimeout3==> settimeout2 ==> settimeout1

w:promise2

h:settimeout3 settimeout2 settimeout1

async function a1 () 

async function a2 ()

console.log('script start')

settimeout(() => , 0)

promise.resolve().then(() => )

a1()

let promise2 = new promise((resolve) => )

promise2.then((res) => )

})console.log('script end')

//執行順序

// script start==>a1 start==>a2==>promise2==> script end==>promise1==>a1 end==> promise2.then==>promise3==>settimeout

w: promise1 a1 end promise2.then promise3

h:settimeout

JS執行機制

js是單執行緒的,settimeout和setinterval是非同步任務,要掛起,不先執行,等同步任務完成之後,再去處理非同步任務 console.log 1 settimeout function 0 console.log 3 console.log 4 輸出 1 3 4 2console.l...

JS執行機制

輸出結果為 1,2,3 js是從上到下執行的 js是單執行緒的,即在同一時間只能做一件事情 遇到同步程式,直接執行 遇到非同步程式,先掛起,等同步程式執行完畢後再執行 同步佇列 優先順序最高 非同步佇列 遇到非同步佇列先掛起,等同步佇列執行完後,再選擇執行非同步佇列的某個 settimeout中的時...

JS執行機制

js單執行緒 在同一時間js只能做一件事。為什麼是單執行緒?如果多執行緒,同時操作乙個dom會出問題。非阻塞 event loop 事件迴圈 任務佇列 同步任務佇列要優先於非同步任務佇列處理。非同步任務被分為巨集任務和微任務。常見的非同步任務分類如下 巨集任務 定時器系列,dom事件 ui互動事件 ...