gpt4 book ai didi

javascript - Angular RxJs - 在第二个流中填充数组(嵌套流)

转载 作者:行者123 更新时间:2023-11-30 14:18:37 25 4
gpt4 key购买 nike

我的 Angular 应用程序中有一个特定模型的列表。此列表的每个项目都有一个属性 xyzList .这xyzList属性应该从依赖于第一个请求的 id 的请求中填充。这里有一个例子:

型号:

{
id: number;
name: string;
xyzList: any[]
}

现在我有两个请求:

请求 1:填充模型,但不填充 xyzList

this.myVar$ = this.myService.getElements<Model[]>();

请求2:应该填写xyzList

this.myService.getXyzElements<XyzModel[]>(idOfTheModelOfTheFirstRequest);

起初我是这么想的:

this.myService.getElements<Model[]>()
.pipe(
mergeMap(items => items)
mergeMap(item => {
return this.myService.getXyzElements<XyzModel[]>(item.id)
.pipe(
map(xyzList => {
item.xyzList = xyzList

return item;
})
)
})
)

这不起作用,因为我已经展平了我的列表,我需要一个 Observable<Array[]> ,但我认为或多或少清楚我想要实现的目标。我想我可以用 forkJoin 来实现例如,但我不知道怎么做。或者有没有办法将扁平化列表转换回列表?

最佳答案

需要使用toArray(),因为mergeMap/flatMap是用来扁平化数据流数组的。它将返回一个数组而不是数据流。

this.myService.getElements<Model[]>()
.pipe(
mergeMap(items => items)
mergeMap(item => {
return this.myService.getXyzElements<XyzModel[]>(item.id)
.pipe(
map(xyzList => {
item.xyzList = xyzList

return item;
})
)
}),
toArray()
)

关于javascript - Angular RxJs - 在第二个流中填充数组(嵌套流),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53129929/

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