五月天青色头像情侣网名,国产亚洲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的評論 (共 條)

分享到微博請遵守國家法律
汝阳县| 连平县| 高雄市| 巴中市| 靖江市| 靖西县| 怀柔区| 柯坪县| 安国市| 巴彦淖尔市| 开江县| 临桂县| 南昌县| 睢宁县| 广河县| 京山县| 保德县| 镇康县| 新建县| 大悟县| 双流县| 西乌珠穆沁旗| 门头沟区| 勃利县| 泸州市| 牟定县| 乌海市| 诸城市| 冕宁县| 尚志市| 佛教| 江安县| 榆林市| 大连市| 四会市| 中卫市| 湘阴县| 楚雄市| 普陀区| 竹北市| 泾川县|