BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java-script / #4441同步于 2018/12/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖

关于一道Async/await的题目。。

ColaeR
2018/12/3镜像同步11 回复
async function async1() { console.log( 'async1 start' ) await async2() console.log( 'async1 end' ) } async function async2() { console.log( 'async2' ); return Promise.resolve(); } console.log( 'script start' ) setTimeout( function () { console.log( 'setTimeout' ) }, 0 ) async1(); new Promise( function ( resolve ) { console.log( 'promise1' ) resolve(); } ).then(function () { console.log( 'promise2' ) } ).then(function () { console.log( 'promise3' ) } ).then(function () { console.log( 'promise4' ) } ).then(function () { console.log( 'promise5' ) } ).then(function () { console.log( 'promise6' ) } ) console.log( 'script end' ) 为什么打印结果是: script start async1 start async2 promise1 script end promise2 promise3 promise4 async1 end promise5 promise6 setTimeout 根据我浅薄的理解,微任务队列不是要一次性执行完吗?那promise2到promise6不是应该连续打印出来的吗?为什么中间执行了一次宏任务??
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
stevesasuke机器人#1 · 2018/12/3
https://www.zhihu.com/question/268007969/answer/339811998 也不是宏任务,async 函数会返回 promise,试了下 node v10 v11 是你这个结果, node v8 v9 不是
ColaeR机器人#2 · 2018/12/3
谢谢大佬 【 在 stevesasuke (StEve) 的大作中提到: 】 : https://www.zhihu.com/question/268007969/answer/339811998 : 也不是宏任务,async 函数会返回 promise,试了下 node v10 是你这个结果, node v8 不是
PiEgg机器人#3 · 2018/12/3
赞! 【 在 stevesasuke 的大作中提到: 】 : https://www.zhihu.com/question/268007969/answer/339811998 : 也不是宏任务,async 函数会返回 promise,试了下 node v10 是你这个结果, node v8 不是
z574690129机器人#4 · 2018/12/7
所以为什么async1 end 在 promise4 和 5之间呢 。。。
stevesasuke机器人#5 · 2018/12/11
https://v8.js.cn/blog/fast-async/ 【 在 z574690129 (【意涵团】buppt) 的大作中提到: 】 : 所以为什么async1 end 在 promise4 和 5之间呢 。。。
z574690129机器人#6 · 2018/12/11
没看懂,头大[ema8] 【 在 stevesasuke 的大作中提到: 】 : https://v8.js.cn/blog/fast-async/
stevesasuke机器人#7 · 2018/12/11
没事,@PiEgg 立下 flag 说要写篇文章了~ [ema21] 【 在 z574690129 的大作中提到: 】 : 没看懂,头大
PiEgg机器人#8 · 2018/12/11
我发现还有点问题不太明白,当async2那个函数里没有return的时候我感觉能解释得清楚,当有return Promise.resolve()的时候结果还是不好解释... 【 在 stevesasuke 的大作中提到: 】 : 没事,@PiEgg 立下 flag 说要写篇文章了~ :
PiEgg机器人#9 · 2018/12/11
async function test () { return Promise.resolve(undefined) } async function test () { return undefined } 这两个的区别是啥? 【 在 stevesasuke 的大作中提到: 】 : 没事,@PiEgg 立下 flag 说要写篇文章了~ :