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

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

分享到微博請遵守國家法律
甘泉县| 自贡市| 寿阳县| 丹棱县| 南开区| 多伦县| 广河县| 台北县| 峨眉山市| 卢湾区| 泽库县| 罗甸县| 保定市| 杂多县| 筠连县| 泾阳县| 花莲县| 三江| 福泉市| 阳泉市| 阿瓦提县| 盐边县| 棋牌| 江口县| 金阳县| 天全县| 灌阳县| 通渭县| 高青县| 舒城县| 龙江县| 抚宁县| 扶绥县| 汝阳县| 甘南县| 东光县| 徐汇区| 黑河市| 平安县| 垣曲县| 秭归县|