返回信息流Promise.resolve('1')
.then(res => {
console.log(res)
})
.finally(() => {
console.log('finally')
})
Promise.resolve('2')
.finally(() => {
console.log('finally2')
return '我是finally2返回的值'
})
.then(res => {
console.log('finally2后面的then函数', res)
})
我用单步调试看到了输出结果是
1
finally2
finally
finally2后面的then函数 2
但是不明白为什么finally2在finally之前输出,请大佬们不吝赐教(??`)
这是一条镜像帖。来源:北邮人论坛 / java-script / #6136同步于 2022/3/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
问一下各位前端大佬们promise finally的输出问题
jane970314
2022/3/25镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
是不是 “非重入”特性,红宝书promise章节好像有讲过,promise落定时,状态处理程序会被排进消息队列
【 在 jane970314 (栗鸢) 的大作中提到: 】
: [code=js]
: Promise.resolve('1')
: .then(res => {
: ...................
1. JS主线程执行的时候,1 是立即执行了,11 被放到微任务队列里,12 只是在内存里,没有放到微任务队列。2 也是立即执行了,把 21 放到了微任务队列,22 在内存里,没放到微任务队列。
2. 主线程执行完了,开始执行微任务队列,11 在最前面,执行完了把 12 放到微任务队列末尾,然后执行 21,把 22 放到微任务末尾。接着执行 12 和 22,结束。
【 在 jane970314 的大作中提到: 】
: [code=js]
: Promise.resolve('1')
: .then(res => {
: ...................