首页 > 解决方案 > 如果其中一个承诺得到解决,如何使承诺调用成功?

问题描述

我正在使用 Promise.all 来合并响应,但如果一个承诺失败它会引发错误我有一个承诺返回成功的调用但一个失败我如何通过解决两个承诺来解决这个问题?

buildHeader 函数将接受两个响应,无论两个调用返回什么,如果它的错误也应该返回,所以我可以获得部分详细信息

main.ts

private async execute(@Request() request: ExpressRequest): Promise < any > {
    let _combineData: any =[];
    try {
        const _dataSpecialty = this.specialtyHandler.specialtyRequestHandler(request);
        const combinedResponses = await Promise.all([
            _dataSpecialty,
            this.caremarkHandler.caremarkRequestHanlder(request)
        ]);

        _combineData = this.buildHeader(combinedResponses, request.body);
    } catch(err) {
        return err;
    }
    return _combineData;
}


private buildHeader(combinedResponse: any[],
    request: ICombinedAccountBalanceRequest): any {
    return {
        getAccountBalanceResponse: {
            header: makeVordelSuccessHeader(request),
            details: combinedResponse
        }
    };
}

标签: javascriptangulartypescriptes6-promise

解决方案


推荐阅读