所以问题很简单-.then
是否应在函数体内返回最后的诺言?
例如:
Promise.resolve().then(function() {
Promise.resolve(1)
Promise.resolve(2)
}).then(function(val) {
return val;
})
当承诺解决时,它是否应返回最后一个值(2)?
我正在处理一些旧代码,这种构造在某些模块中非常普遍,但是不起作用。
答案 0 :(得分:1)
这不应该起作用,因为第一个返回的是未定义的承诺。
也许您应该看看Promise.all() https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
答案 1 :(得分:0)
.then
应该返回函数体内的最后一个诺言吗?
不。函数(包括then
回调)应在函数体内返回 all 承诺。也就是说,除非您explicitly want to ignore some of them。
当然,一个函数只能返回一个值,因此它只能返回一个promise。如果您要执行多项操作,则一个接一个地执行它们,并兑现您的承诺,或者一次执行它们,然后使用Promise.all
做出一个等待所有结果的承诺。
还要注意.then(function(val) { return val; })
is pointless and should be dropped。