返回信息流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不是应该连续打印出来的吗?为什么中间执行了一次宏任务??
这是一条镜像帖。来源:北邮人论坛 / java-script / #4441同步于 2018/12/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
关于一道Async/await的题目。。
ColaeR
2018/12/3镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
https://www.zhihu.com/question/268007969/answer/339811998
也不是宏任务,async 函数会返回 promise,试了下 node v10 v11 是你这个结果, node v8 v9 不是
谢谢大佬
【 在 stevesasuke (StEve) 的大作中提到: 】
: https://www.zhihu.com/question/268007969/answer/339811998
: 也不是宏任务,async 函数会返回 promise,试了下 node v10 是你这个结果, node v8 不是
赞!
【 在 stevesasuke 的大作中提到: 】
: https://www.zhihu.com/question/268007969/answer/339811998
: 也不是宏任务,async 函数会返回 promise,试了下 node v10 是你这个结果, node v8 不是
https://v8.js.cn/blog/fast-async/
【 在 z574690129 (【意涵团】buppt) 的大作中提到: 】
: 所以为什么async1 end 在 promise4 和 5之间呢 。。。
没看懂,头大[ema8]
【 在 stevesasuke 的大作中提到: 】
: https://v8.js.cn/blog/fast-async/
我发现还有点问题不太明白,当async2那个函数里没有return的时候我感觉能解释得清楚,当有return Promise.resolve()的时候结果还是不好解释...
【 在 stevesasuke 的大作中提到: 】
: 没事,@PiEgg 立下 flag 说要写篇文章了~
:
async function test () {
return Promise.resolve(undefined)
}
async function test () {
return undefined
}
这两个的区别是啥?
【 在 stevesasuke 的大作中提到: 】
: 没事,@PiEgg 立下 flag 说要写篇文章了~
: