async function async1() { console.log('1'); await async2(); console.log('2'); } async function async2() { console.log('3');} console.log('4'); setTimeout(function(){ console.log('5');},0) async1(); new Promise(function(resolve){ console.log('6'); resolve(); }).then(function() { console.log('7');}); console.log('8');
时间: 2024-04-26 10:23:21 浏览: 152
async-socks5:async.await SOCKS5实现
这段代码的输出顺序是4,1,3,6,8,2,7,5。
解释如下:
1. 首先输出4,因为这是同步代码。
2. 调用async1(),输出1,因为async1()是异步函数,所以会被加入微任务队列,等待同步代码执行完毕后再执行。
3. 调用async2(),输出3,因为async2()是异步函数,所以会被加入微任务队列,等待async1()执行完毕后再执行。
4. 输出6,因为Promise是同步代码,所以会立即执行。
5. 输出8,因为这是同步代码。
6. async2()执行完毕,输出2。
7. Promise的resolve()执行完毕,then()里的回调函数被加入微任务队列,等待异步任务执行完毕后再执行。
8. 执行完毕所有同步代码,开始执行微任务队列里的任务,输出7。
9. 最后执行定时器里的回调函数,输出5。
阅读全文