function fn() {
return Promise.resolve("firstValue")
}
function twoReturnValues(firstValue) {
return firstValue, "secondValue"
}
function twoReturnValuesPromise(firstValue) {
return Promise.resolve(firstValue, "secondValue")
}
fn().then(twoReturnValues).then(console.log) // secondValue
fn().then(twoReturnValuesPromise).then(console.log) // firstValue
鉴于上面的代码段,我很困惑为什么:
fn().then(twoReturnValues).then(console.log)
印刷品:secondValue
和:fn().then(twoReturnValuesPromise).then(console.log)
打印:firstValue
因为您不能有两个返回值,只有一个,并且"a", "b"
不会执行您当时认为的操作。 (如果您需要返回比单个值更复杂的数据,请返回数组或对象。)
您看到两种不同的行为。
第一:
return "a", "b"
这正在使用comma operator:
逗号运算符(
,
)评估其每个操作数(从左到右,并返回最后一个操作数的值。
因此,表达式"a", "b"
的计算结果为"b"
,因此您的声明与此基本相同:
return "b"
第二:
Promise.resolve("a", "b")
根据Promise.resolve
documentation,它采用one参数,即用于解决承诺的值。与JavaScript通常一样,其他参数会被静默忽略,因此您的操作与此处基本相同:
Promise.resolve