console.log('script start')
async function async1(){
await async2()
console.log('async1 end')
}
async function async2(){
console.log('async2 end')
return Promise.resolve().then(()=>{
console.log('async2 end1')
})
}
async1()
setTimeout(function(){
console.log('setTimeout')
},0);
new Promise(resolve =>{
console.log('Promise')
resolve()
}).then(function(){
console.log('promise1')
}).then(function(){
console.log('promise2')
}).then(()=>{
console.log('test1')
});
console.log('script end')
async1方法调用 |
async1 中 await 后 async2方法调用 |
async2 end 打印,promise.resolve().then(()=>{console.log(async2 end1)}) 加入微任务队列 |
setTimeOut 宏任务,加入宏任务队列 |
new Promise 执行 打印 Promise; 把 .then(function(){console.log(‘promise1')}) 加入任务队列 |
console.log(’script end’) 打印 script end |
第一轮结束 |
执行第一轮第一个微任务 promise.resolve().then(()=>{ console.log(async2 end1) }),打印 async2 end1 |
await后等 第二轮最后执行 |
执行第一轮 第二个微任务 .then(function(){console.log(‘promise1')}) 打印 promise1,添加 .then(function(){console.log(‘promise2')}) 到微任务队列 |
第二轮 最后把console.log(async1 end) 加入微任务队列 |
第二轮结束 |
第三轮 执行第二轮微任务 .then(function(){console.log(‘promise2')}) 执行,.then(function(){console.log(‘test1‘')}) 加入微任务队列 |
执行 第三轮 第二个微任务 console.log(async1 end); 打印 async1 end; |
第三轮结束 |
第四轮 执行第三轮 微任务 .then(function(){console.log(‘test1‘')}) 打印test1 |
第一个宏任务结束 |
执行第二个宏任务 setTimeOut |
打印 setTimeOut |
宏任务 |
| 微任务队列 |
| 第一轮 |
|
|
| promise.resolve().then(()=>{ console.log(async2 end1) }) |
|
| .then(function(){console.log(‘promise1')}) |
| 第二轮 |
|
|
| .then(function(){console.log(‘promise2')}) |
|
| console.log(async1 end) |
| 第三轮 |
|
|
| .then(function(){console.log(‘test1‘')}) |
|
|
|
宏任务 |
| setTimeOut |