亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

萌新求教!async異步代碼的執行順序求解?各位有什么建議?

萌新求教!async異步代碼的執行順序求解?各位有什么建議?

江戶川亂折騰 2019-08-24 22:08:06
下面這段async異步代碼的執行順序有些不理解,求大神能指導指導,最好能幫忙分析下相關微任務隊列的過程asyncfunctionasync1(){returnnewPromise(resolve=>{Promise.resolve().then(()=>{async2().then(resolve)})}).then(()=>{console.log('async1end')})}asyncfunctionasync2(){}async1()Promise.resolve().then(function(){console.log('promise2')}).then(function(){console.log('promise3')}).then(function(){console.log('promise4')})//promise2//promise3//async1end//promise4
查看完整描述

2 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

執行console.log('promise4')之前會經歷兩輪微任務的執行,因為你每次調用.then都是一次新的微任務,瀏覽器會去跑上一個隊列里面的微任務你數一數async1里面要'耽誤'兩次,才能執行到end
                            
查看完整回答
反對 回復 2019-08-24
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

我理解的是上邊兩個then沒有做什么事情,因為then是異步,所以同時下邊的也會接著走,等上邊的代碼的promise的狀態變成resolve的時候下邊走了兩次了所以,then就是一遍一遍輪詢微任務隊列嘛,微任務隊列是沒有同步任務的時候就會去查詢的//promise2//promise3//async1end//promise4
                            
查看完整回答
反對 回復 2019-08-24
  • 2 回答
  • 0 關注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號