1.进入到 async1,发现同步任务,输出'async1 start'
2.遇到了await,进入到async2,碰到定时器,加入到异步队列里面的宏任务
3.在async2 有一个同步任务 直接输出'async2'
4.由于await 阻塞了后面代码的执行 将后面的代码加入微任务 所以向下去找
5.碰到了定时器 加入到宏任务里
6.碰到同步任务 输出'start'
7.同步代码执行完毕 先执行微任务
8.先输出微任务里面的 同步任务 输出'async1 end'
9.微任务里面有定时器 加入到宏任务里
10.微任务执行完毕 执行宏任务
11.宏任务队列里面有3个任务
12.按照顺序执行 timer2=>timer3=>timer1
async 函数
1.函数返回值返回Promise对象
2.Promise对象结果由async里面的返回值决定
await函数
1.必须写在async里面
2.如果遇到await函数 函数后面的代码会被阻止 加入微任务队列里面