五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

JS關(guān)于Promise和async await

2023-08-23 16:54 作者:小幻不想碼代碼  | 我要投稿

復習Promise這塊 對于消息隊列,宏任務,微任務這塊的個人理解,有問題還請各位大佬指正

Promise

運行結(jié)果:

1

2

10

5

6

8

9

3

個人理解:微任務的優(yōu)先級比宏任務優(yōu)先級高,當微任務沒有的時候會執(zhí)行宏任務,存在微任務時,執(zhí)行完一個宏任務,會優(yōu)先執(zhí)行微任務

  • timeOut2進入宏任務 [timeOut2] [[]] 控制臺輸出:

  • 執(zhí)行console.log(1),[timeOut2] [[]] 控制臺輸出:1

  • p1的狀態(tài)變?yōu)閞esolve,[timeOut2] [[]] 控制臺輸出:1

  • 執(zhí)行console.log(2),[timeOut2] [[]] 控制臺輸出:1,2

  • timeOut1進入宏任務 [timeOut2,timeOut1] [[]] 控制臺輸出:1,2

  • p2的狀態(tài)變?yōu)閞esolve,控制臺輸出:1,2

  • p2.then加入微任務 [timeOut2,timeOut1] [[p2.then]] 控制臺輸出:1,2

  • p1.then加入微任務 [timeOut2,timeOut1] [[p2.then,p1.then]] 控制臺輸出:1,2

  • 執(zhí)行console.log(10) [timeOut2,timeOut1] [[p2.then,p1.then]] 控制臺輸出:1,2,10

  • 執(zhí)行p2.then ?[timeOut2,timeOut1] [[p1.then]] 控制臺輸出:1,2,10,5

  • 執(zhí)行p1.then ?[timeOut2,timeOut1] [[]] 控制臺輸出:1,2,10,5,6

  • 執(zhí)行timeOut2 ?,執(zhí)行console.log(8),p3狀態(tài)變?yōu)閞esolve,p3.then加入微任務。[timeOut1] [[p3.then]] 控制臺輸出:1,2,10,5,6,8

  • 執(zhí)行微任務p3.then [timeOut1] [[]] 控制臺輸出:1,2,10,5,6,8,9

  • 執(zhí)行timeOut1 控制臺輸出:1,2,10,5,6,8,9,3

async await

運行結(jié)果:

script start

async2 end

Promise

script end

async2 end1

promise1

promise4

promise2

async1 end

promise3

setTimeout

個人理解:執(zhí)行完await 時 會先把他的then加入微任務 ?他的then執(zhí)行完 再執(zhí)行后面的

  • 執(zhí)行console.log('script start'),[] [[]] 控制臺輸出:script start

  • 進入async1,在進入async2,執(zhí)行console.log('async2 end') async2 end1進入微任務 [] [[async2 end1]] 控制臺輸出:script start,async2 end

  • 當async2 end1的then執(zhí)行完 ?async1 end才會進入微任務

  • setTimeout進入宏任務 ?[setTimeout] [[async2 end1]] 控制臺輸出:script start,async2 end

  • 執(zhí)行console.log('Promise'),promise1進入微任務 ?[setTimeout] [[async2 end1,promise1]] ?控制臺輸出:script start,async2 end,Promise

  • promise4進入微任務 [setTimeout] [[async2 end1,promise1,promise4]] 控制臺輸出:script start,async2 end,Promise

  • console.log('script end') ? ?[setTimeout] [[async2 end1,promise1,promise4]] 控制臺輸出:script start,async2 end,Promise,script end

  • 執(zhí)行async2 end1 ?async2()的then進入微任務 ? [setTimeout] [[promise1,promise4,v]] 控制臺輸出:script start,async2 end,Promise,script end,async2 end1

  • 執(zhí)行promise1。promise2進入微任務 [setTimeout] [[promise4,v,promise2]] 控制臺輸出:script start,async2 end,Promise,script end,async2 end1,promise1

  • 執(zhí)行promise4。 ?[setTimeout] [[v,promise2]] 控制臺輸出:script start,async2 end,Promise,script end,async2 end1,promise1,promise4

  • 執(zhí)行v, [setTimeout] [[promise2,async1 end]] 控制臺輸出:script start,async2 end,Promise,script end,async2 end1,promise1,promise4

  • 執(zhí)行promise2。[setTimeout] [[async1 end,promise3]] 控制臺輸出:script start,async2 end,Promise,script end,async2 end1,promise1,promise4,promise2

  • 執(zhí)行async1 end [setTimeout] [[promise3]] 控制臺輸出:script start,async2 end,Promise,script end,async2 end1,promise1,promise4,promise2,async1 end

  • 執(zhí)行promise3 ?控制臺輸出:script start,async2 end,Promise,script end,async2 end1,promise1,promise4,promise2,async1 end,promise3

  • 執(zhí)行setTimeout。最后輸出:script start,async2 end,Promise,script end,async2 end1,promise1,promise4,promise2,async1 end,promise3,setTimeout


JS關(guān)于Promise和async await的評論 (共 條)

分享到微博請遵守國家法律
萝北县| 庄浪县| 沁水县| 通州区| 乐昌市| 麻江县| 普定县| 黔东| 吉木萨尔县| 泽库县| 车致| 蓝田县| 西昌市| 双峰县| 潍坊市| 奉节县| 龙口市| 金乡县| 宝兴县| 信阳市| 芦溪县| 栖霞市| 遵义县| 青州市| 堆龙德庆县| 溧水县| 六安市| 三明市| 安福县| 芦溪县| 黄梅县| 连南| 四会市| 龙胜| 成安县| 博兴县| 北京市| 广饶县| 枣强县| 巨野县| 潞西市|