为了账号安全,请及时绑定邮箱和手机立即绑定

async异步代码的执行顺序求解?万分感谢

async异步代码的执行顺序求解?万分感谢

哔哔one 2019-09-19 22:25:12
下面这段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贡献1862条经验 获得超6个赞

执行console.log('promise4')之前会经历两轮微任务的执行,因为你每次调用.then都是一次新的微任务,浏览器会去跑上一个队列里面的微任务你数一数async1里面要'耽误'两次,才能执行到end
                            
查看完整回答
反对 回复 2019-09-19
?
青春有我

TA贡献1784条经验 获得超8个赞

我理解的是上边两个then没有做什么事情,因为then是异步,所以同时下边的也会接着走,等上边的代码的promise的状态变成resolve的时候下边走了两次了所以,then就是一遍一遍轮询微任务队列嘛,微任务队列是没有同步任务的时候就会去查询的//promise2//promise3//async1end//promise4
                            
查看完整回答
反对 回复 2019-09-19
  • 2 回答
  • 0 关注
  • 272 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信