Javascript 有承诺的正确方法是什么?

Javascript 有承诺的正确方法是什么?,javascript,typescript,promise,Javascript,Typescript,Promise,我有两个基于请求的调用,可能是一个api调用,也可能是两个api调用,所以我实现了下面的代码,不确定这是否是使用promise.all的正确方法。我还希望在任何promise失败的情况下将错误返回给用户 execute功能从路由执行。 如果有更好的实施方法,我将非常感谢您的反馈 梅因酒店 public async execute(@Request() request: express.Request): Promise<[any] | any> { if (request.b

我有两个基于请求的调用,可能是一个api调用,也可能是两个api调用,所以我实现了下面的代码,不确定这是否是使用promise.all的正确方法。我还希望在任何promise失败的情况下将错误返回给用户

execute
功能从路由执行。 如果有更好的实施方法,我将非常感谢您的反馈

梅因酒店

public async execute(@Request() request: express.Request): Promise<[any] | any> {
    if (request.body.lob === "credit") {
        return this.getCardDetails(request);
    }
    if (request.body.lob === "individual") {
        return this.getAccountDetails(request);
    }
    return Promise.all([this.getCardDetails(request), this.getAccountDetails(request)]);
}

@Post('getAccountDetails')
private async getAccountDetails(@Body() request: any): Promise<any> {
    // process retrieveData Call and get response 
}

@Post('getCardDetails')
private async getCardDetails(@Body() request: any): Promise<any> {

 // process cardDetails Call and get response 
}
公共异步执行(@Request()请求:express.Request):承诺{ if(request.body.lob==“credit”){ 返回此.getCardDetails(请求); } if(request.body.lob==“个人”){ 返回此.getAccountDetails(请求); } 返回承诺.all([this.getCardDetails(请求)、this.getAccountDetails(请求)]); } @Post('getAccountDetails') 私有异步getAccountDetails(@Body()请求:any):承诺{ //处理retrieveData调用并获取响应 } @Post('getCardDetails') 私有异步getCardDetails(@Body()请求:any):承诺{ //处理cardDetails呼叫并获取响应 }
承诺。如果任何给定承诺失败,则所有
都将抛出错误。实现看起来是正确的,这个实现面临的问题是什么?这看起来很好,尽管我会将
execute
东西放在路由器中,路由器也会直接写入响应,与其使用带有
Promise
signature的方法,不如考虑一下是否有更好的方法来编写上述代码,错误处理
Promise
应该是
Promise
,我认为在您的情况下,
all
将返回一个包含2个元素的元组,或者
Promise
如果确实要返回任意长度的数组