萌新求教!async异步代码的执行顺序求解?

下面这段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
回首忆惘然
浏览 234回答 2
2回答

波斯汪

执行console.log('promise4')之前会经历两轮微任务的执行,因为你每次调用.then都是一次新的微任务,浏览器会去跑上一个队列里面的微任务你数一数async1里面要'耽误'两次,才能执行到end

白猪掌柜的

我理解的是上边两个then没有做什么事情,因为then是异步,所以同时下边的也会接着走,等上边的代码的promise的状态变成resolve的时候下边走了两次了所以,then就是一遍一遍轮询微任务队列嘛,微任务队列是没有同步任务的时候就会去查询的//promise2//promise3//async1end//promise4
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript