Javascript 什么';这是在承诺链中返回多个值的最佳方式

Javascript 什么';这是在承诺链中返回多个值的最佳方式,javascript,promise,return,Javascript,Promise,Return,我确实意识到,当在.then()处理程序中返回一个非承诺时,它会立即传递给下一个处理程序,如果它是返回的承诺,则在传递给下一个处理程序之前,会停止执行以解决该承诺 我还知道,承诺只能返回一个值 Being说,,如何从一个.then()处理程序返回多个参数到下一个?如果它是承诺和非承诺的混合体,则ESEPC通常会失败。目前,我将所有内容放入一个自定义对象中,返回它,并在下面的then()处理程序中使用async await来实现reslolve承诺 然后是使用解析的承诺值和非承诺值一起做一些工作

我确实意识到,当在.then()处理程序中返回一个非承诺时,它会立即传递给下一个处理程序,如果它是返回的承诺,则在传递给下一个处理程序之前,会停止执行以解决该承诺

我还知道,承诺只能返回一个值

Being说,,如何从一个.then()处理程序返回多个参数到下一个?如果它是承诺和非承诺的混合体,则ESEPC通常会失败。目前,我将所有内容放入一个自定义对象中,返回它,并在下面的then()处理程序中使用async await来实现reslolve承诺

然后是使用解析的承诺值和非承诺值一起做一些工作

这很好,但我的直觉告诉我,这不是应该的方式。。。也许吧

例如:

const current='blah';
const previous='blubb';
this.doSomeAsyncWork()文件
.那么(
结果=>{
const nonPromiseValue=新域同步(当前、以前);
//自定义对象,承诺和非承诺的混合
返回{
不妥协:不妥协,
promiseA:ControllerA.asyncOperationA(当前的、非PromiseValue.someProperty),
promiseB:ControllerB.asyncOperationB(非PromiseValue.someOtherProperty),
}
}
)
.那么(
异步x=>{
const nonPromiseValue=x.nonPromiseValue;
const valueA=等待x.承诺;
const valueB=等待x.承诺b;
//对这三个变量的结果做些什么
}
)
.接住(
// ...

)
使用
返回承诺。在
末尾的承诺和非承诺数组中的所有
。然后
,然后您可以在下一个
中立即对结果进行分解。然后
,不需要
等待
也不需要
异步

数组中的所有
承诺都已解决后,
承诺.all
将立即解决。传递给它的非承诺将只传递给下一个
。然后

constmakeprom=()=>newpromise(resolve=>setTimeout(resolve,1000,'resolveValue');
承诺,决心
.然后(()=>{
const prom=makeProm();
const otherValue='foo';
返回承诺。全部([prom,otherValue]);
})
.然后(([resolveValue,otherValue])=>{
console.log(resolveValue,otherValue);

});
使用
返回承诺。在
末尾的承诺和非承诺数组上的所有
。然后
,然后您可以在下一个
中立即对结果进行分解。然后
,无需
等待
异步

数组中的所有
承诺都已解决后,
承诺.all
将立即解决。传递给它的非承诺将只传递给下一个
。然后

constmakeprom=()=>newpromise(resolve=>setTimeout(resolve,1000,'resolveValue');
承诺,决心
.然后(()=>{
const prom=makeProm();
const otherValue='foo';
返回承诺。全部([prom,otherValue]);
})
.然后(([resolveValue,otherValue])=>{
console.log(resolveValue,otherValue);

});谢谢。Promise.all([])数组中的每个元素都会保留其索引吗?如果我有例如3个承诺[prom1、prom2、prom3、nonProm]并且prom3在prom1之前解决,prom3是否仍有索引2?是,每个项目的各自索引将被保留。传递给
承诺的数组中的索引1。所有
都将是下一个
中索引1的相同项(或解析为的承诺)。然后
的数组堆栈。Promise.all([])数组中的每个元素都会保留其索引吗?如果我有例如3个承诺[prom1、prom2、prom3、nonProm]并且prom3在prom1之前解决,prom3是否仍有索引2?是,每个项目的各自索引将被保留。传递给
承诺的数组中的索引1。所有
都将是下一个
的数组中的相同项(或解析为索引1的承诺)。然后
的数组