JS Promises:如果 `then` 中的处理程序块 returns 一个值与返回已解决的 promise,那么 `then` 块是否以相同的方式处理它?
JS Promises: if a handler in a `then` block returns a value vs returning a resolved promise, does the `then` block handle it the same way?
假设我有一个函数 return 是这样一个已解决的承诺:
let a = () => {return new Promise(res => res(1))}
然后我 then-ify
是这样的:
a()
.then(val => {return new Promise(res => res(1))})
此处 then
包含一个处理程序,该处理程序 return 是使用 1
解决的承诺,因此 then
块 return 是使用 [= 解决的承诺16=] 还有。是吗?
然后说我们有这个:
a()
.then(val => {return 1})
处理程序 returns 1
而不是 return 使用 1
解决的承诺。
我想知道的: then
是否阻止 return 在这两种情况下使用 1
解决的承诺,甚至尽管一个处理程序 return 处理了一个已解决的承诺,而另一个处理程序只是 return 处理了一个值?换句话说,then
块处理 return 承诺用值解析的处理程序是否与处理 return 值本身的处理程序的方式相同?
从 then
块返回的所有值都隐式包装在 Promise.resolve
中,因此不需要返回 Promise.resolve(1)
。
假设我有一个函数 return 是这样一个已解决的承诺:
let a = () => {return new Promise(res => res(1))}
然后我 then-ify
是这样的:
a()
.then(val => {return new Promise(res => res(1))})
此处 then
包含一个处理程序,该处理程序 return 是使用 1
解决的承诺,因此 then
块 return 是使用 [= 解决的承诺16=] 还有。是吗?
然后说我们有这个:
a()
.then(val => {return 1})
处理程序 returns 1
而不是 return 使用 1
解决的承诺。
我想知道的: then
是否阻止 return 在这两种情况下使用 1
解决的承诺,甚至尽管一个处理程序 return 处理了一个已解决的承诺,而另一个处理程序只是 return 处理了一个值?换句话说,then
块处理 return 承诺用值解析的处理程序是否与处理 return 值本身的处理程序的方式相同?
从 then
块返回的所有值都隐式包装在 Promise.resolve
中,因此不需要返回 Promise.resolve(1)
。