Javascript 有承诺的正确方法是什么?
我有两个基于请求的调用,可能是一个api调用,也可能是两个api调用,所以我实现了下面的代码,不确定这是否是使用promise.all的正确方法。我还希望在任何promise失败的情况下将错误返回给用户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
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
如果确实要返回任意长度的数组