JS承诺:如果`then`块中的处理程序返回一个值而不是返回一个已解析的Promise,那么`then`块是否以相同的方式处理它?
说我有一个函数,它返回像这样的已解决的承诺:
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
块是否以与处理返回值本身的处理程序相同的方式处理返回用值解析的承诺的处理程序?
从then
块返回的所有值都隐式包装在Promise.resolve
中,因此不需要返回Promise.resolve(1)
。
JS承诺:如果`then`块中的处理程序返回一个值而不是返回一个已解析的Promise,那么`then`块是否以相同的方式处理它?
说我有一个函数,它返回像这样的已解决的承诺:
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
块是否以与处理返回值本身的处理程序相同的方式处理返回用值解析的承诺的处理程序?
从then
块返回的所有值都隐式包装在Promise.resolve
中,因此不需要返回Promise.resolve(1)
。
发布评论