下面这段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贡献1811条经验 获得超4个赞
执行console.log('promise4')之前会经历两轮微任务的执行,因为你每次调用.then都是一次新的微任务,浏览器会去跑上一个队列里面的微任务你数一数async1里面要'耽误'两次,才能执行到end
白猪掌柜的
TA贡献1893条经验 获得超10个赞
我理解的是上边两个then没有做什么事情,因为then是异步,所以同时下边的也会接着走,等上边的代码的promise的状态变成resolve的时候下边走了两次了所以,then就是一遍一遍轮询微任务队列嘛,微任务队列是没有同步任务的时候就会去查询的//promise2//promise3//async1end//promise4
添加回答
举报
0/150
提交
取消