gpt4 book ai didi

angular - 如何使用 forkjoin 返回 Angular 中两个独立 API 调用的组合响应

转载 作者:行者123 更新时间:2023-12-01 23:00:26 26 4
gpt4 key购买 nike

我有两个独立的 API 调用。下面是两个 api 调用的代码:

public getLendingType(partyId: string): Observable<{ lendingType: string, partyId: string }> {
return this.customerRepositoryService.getCustomer(partyId).pipe(
map((customer: ICustomer) => {
return { lendingType: customer.LendingType, partyId: partyId } ;
})
);
}

private getPartyType(partyId: string): Observable<{ partyType: string}> {
return this.partyRepositoryService.getParty(partyId).pipe(
map((party: IParty) => {
return { partyType: party.PartyType };
})
);
}

如您所见,这两个 api 调用是相互独立的。此时我想使用 forkjoin 来组合他们的响应并返回组合结果。这就是我卡住的地方。我为这部分编写的代码如下:

  public getPartyTypeAndLendingType(partyId: string): Observable<{ partyType: string, lendingType: string, partyId: string }> {

return forkJoin([this.getLendingType(partyId), this.getPartyType(partyId)]).subscribe ( result => {
return { partyType: result[1].partyType, lendingType: result[0].lendingType, partyId: result[0].partyId }
})
}

但我想我遗漏了一些东西,但我仍然遇到编译器错误,如下图所示:

enter image description here

并将鼠标悬停在它显示以下消息的编译器错误上:

Type 'Subscription' is missing the following properties from type 'Observable<{ partyType: string; lendingType: string; partyId: string; }>': source, operator, lift, subscribe, and 3 more.ts(2740

如何实现这一点并使这段代码工作?

最佳答案

因为您正在调用 .subscribe(),您的函数返回一个 Subscription 而不是 Observable

要转换 API 调用的结果,请使用带有 map().pipe()。这样您的函数将返回一个 Observable。

return forkJoin([
this.getLendingType(partyId),
this.getPartyType(partyId)
]).pipe(
map(result =>
({ partyType: result[1].partyType, lendingType: result[0].lendingType, partyId: result[0].partyId })
)
)

关于angular - 如何使用 forkjoin 返回 Angular 中两个独立 API 调用的组合响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71928988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com