JS承诺:如果`then`块中的处理程序返回一个值而不是返回一个已解析的Promise,那么`then`块是否以相同的方式处理它?

问题描述 投票:0回答:1

说我有一个函数,它返回像这样的已解决的承诺:

let a = () => {return new Promise(res => res(1))}

然后我then-ify像这样:

a()
.then(val => {return new Promise(res => res(1))})

这里then包含一个处理程序,该处理程序返回以1解析的承诺,因此then块也返回一个以1解析的承诺。是吗?

然后说我们有这个:

a()
.then(val => {return 1})

处理程序返回1而不是返回用1解析的承诺。

[我想知道:在这两种情况下,即使一个处理程序返回了一个已解决的承诺而另一个处理程序刚刚返回了一个值,then块是否返回用1来解决的承诺?换句话说,then块是否以与处理返回值本身的处理程序相同的方式处理返回用值解析的承诺的处理程序?

javascript promise es6-promise
1个回答
1
投票

then块返回的所有值都隐式包装在Promise.resolve中,因此不需要返回Promise.resolve(1)

© www.soinside.com 2019 - 2024. All rights reserved.