Javascript 应该。然后返回函数体内的最后一个承诺?

Javascript 应该。然后返回函数体内的最后一个承诺?,javascript,Javascript,因此,问题很简单,是否应该返回函数体中的最后一个承诺 例如: Promise.resolve().then(function() { Promise.resolve(1) Promise.resolve(2) }).then(function(val) { return val; }) 当承诺解析时,它是否应该返回最后一个值(2) 我正在处理一些遗留代码,这种构造在一些模块中非常常见,但不起作用 这不应该起作用,因为第一个将返回未定义的承诺 也许你应该看看承诺 是否应。然后返回函

因此,问题很简单,
是否应该返回函数体中的最后一个承诺

例如:

Promise.resolve().then(function() {
  Promise.resolve(1)
  Promise.resolve(2)
}).then(function(val) {
  return val;
})
当承诺解析时,它是否应该返回最后一个值(2)


我正在处理一些遗留代码,这种构造在一些模块中非常常见,但不起作用

这不应该起作用,因为第一个将返回未定义的承诺

也许你应该看看承诺

是否应
。然后
返回函数体中的最后一个承诺

不可以。函数(包括
然后
回调)应该返回其内部的所有承诺。那就是,除非你

当然,一个函数只能返回一个值,因此它只能返回一个承诺。如果你正在做多项工作,要么一件接一件地做,并将你的承诺连成一个链条,要么立即做,然后使用
promise.all
做出承诺,等待所有结果


还请注意。

不清楚此代码应该做什么。您的代码没有多大意义,但您需要从第一个
然后
返回一些东西,以便将其解析为第二个
然后
val
。因此,如果您编写
返回承诺.resolve(2)
val
将是
2
,但
Promise.resolve(1)
将是一个悬而未决的承诺,不属于该链的一部分。对于这个任意的例子,你到底想问什么还不是很清楚。@t.niese。所以在这种情况下没有什么比隐式返回更好的了,对吧?是的,没有隐式返回,如果你想等待两个承诺,你会写
Promise.all([promiseA,promiseB])。然后(function(results){}
或者使用
wait
/
async