最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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的評論 (共 條)

分享到微博請遵守國家法律
乃东县| 丰城市| 罗江县| 武乡县| 榕江县| 文登市| 类乌齐县| 高青县| 庆城县| 孟州市| 赤城县| 嘉禾县| 湘西| 定远县| 延吉市| 宜君县| 安远县| 荔波县| 河东区| 新巴尔虎右旗| 恭城| 梧州市| 迭部县| 永春县| 会理县| 南开区| 泸西县| 蒙城县| 米林县| 德兴市| 辽中县| 镇平县| 泗洪县| 遵义市| 安徽省| 溆浦县| 焉耆| 灵璧县| 游戏| 眉山市| 连城县|