Ngrx, Rxjs - 合并返回新流的可观察流



我正在尝试加入两个可观察的流以创建一个我也可以订阅的新流。两个输入流都返回对象数组。我尝试使用 forkJoin 运算符,后跟管道图并订阅如下:

forkJoin(
this.firstObservable$,
this.secondObservable$
).pipe(
map(([first, second]) => {
// here create a new array array = [] and push new Object { first.something, second.something
// return newArray
}
})
).subscribe((data: any) => {
this.data = data;
});

但这似乎并没有按预期工作。我也用水龙头试过这个。正确的方法是什么?

Rxjs 提供了几个用于组合流的运算符(您可以在此处找到此运算符的列表),在您的情况下,我可以建议您使用combineLatestforkJoin,使用它们取决于输入可观察对象的类型

forkJoin - 当所有可观察量完成时,从每个可观察量发出最后一个发出的值。

combileLatest - 当任何可观察量发出一个值时,从每个

注意:ngrx 选择器未完成,如果输入可观察量是 ngrx 选择器,请使用combineLatest

ForkJoin 本身返回一个可观察量,您可以将其订阅为

forkJoin([
this.firstObservable$,
this.secondObservable$
]).subscribe(res => {
//res[0] is the result emitted for the first observable
});

并且您无需使用map来尝试合并它们

最新更新