【发布时间】:2020-08-03 11:27:18
【问题描述】:
我需要从三个 Observable 流的结果构造一个嵌套对象并显示 .所有三个可观察对象都返回一个数组,其中两个取决于第一个的结果。我的代码如下:
this.selectActiveFoos$.pipe(
concatMap(foos => {
return foos.map(foo => {
let bars$ = this.barQuery.selectBarsByFooId(foo.id);
let bazs$ = this.bazQuery.selectBazsByFooId(foo.id); // these observables return Observable<T[]>
return forkJoin([bars$, bazs$]).pipe(
map(([bars, bazs]) => {
return {
foo: foo,
bars: bars,
bazs: bazs
}
})
);
});
})).subscribe(result => {
console.log(result);
});
}
IntelliSense 告诉我结果的类型符合预期,即 a
{ foo: foo, bars: bar[], bazs: baz[] }
然而,控制台会记录一个 observable 作为输出。这真的让我陷入了困境。我在网上搜索了很长时间,但似乎找不到适用于 Observable
如果有任何建议,我将不胜感激!
【问题讨论】:
-
您可能会为
foos数组的每个元素返回[forkJoin(), forkJoin(),..]。您需要展示该数组的结构以及forkJoin的每个可观察对象的外观。
标签: angular typescript rxjs observable