gpt4 book ai didi

javascript - Rxjs:将数组字段中的每个元素从对象的可观察对象映射到另一个可观察对象

转载 作者:行者123 更新时间:2023-12-05 02:30:30 25 4
gpt4 key购买 nike

我有一个名为 getTransactionDetails(id:string) 的方法,它返回一个 Observable of TransactionDetails 对象

getTransactionDetails(id:string):Observable<TransactionDetails> 

TransactionDetails 对象如下所示:

class TranscationDetails{
id:string;
accessCode: string;
veggiesList: Array<Veggie>;
meatList: Array<Meat>;
}

Veggie 对象如下所示:

class Veggie{
id: string;
name: string;
}

我有另一个方法叫做 getVeggieSummary(veggieId: string),它返回一个 VeggieSummary 的 Observable:

getVeggieSummary(veggiesId:string):Observable<VeggieSummary>

VeggieSummary 看起来像这样

class VeggieSummary{
id:string;
name:string;
color:string;
kind:string;
}

我想调用 getTransactionDetails(1),并将 veggiesList 中的所有 Veggies 元素转换为 VeggieSummary 并返回一个 VeggieSummary 数组。

这是我的

getTransactionDetails(1)
.flatMap(transactionDetails=>
transactionDetails.veggiesList
.map(veggie=>getVeggieSummary(veggie.id)))
.subscribe(result=>
console.log(result)
)

目前,result是一个 Observable<VeggieSummary>并且内部可观察对象甚至没有被订阅...

我怎样才能拥有 Observable<VeggieSummary[]>与 rxjs 运营商?

注意:我的应用的 Angular 版本不支持管道。 RxJS 版本为 v5

最佳答案

您只需要用 forkJoin 包装内部可观察对象, 这会转换 Observable<VeggieSummary>[]Observable<VeggieSummary[]>

    getTransactionDetails(1)
.flatMap((transactionDetails) =>
forkJoin(
transactionDetails.veggiesList.map((veggie) =>
getVeggieSummary(veggie.id)
)
)
)
.subscribe((result) => console.log(result));

关于javascript - Rxjs:将数组字段中的每个元素从对象的可观察对象映射到另一个可观察对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71833865/

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