RxJS 动态可观察源

标签 rxjs rxjs6

我想创建一个由许多可观察对象组成的可观察对象(合并它们)。这可以通过 merge(...arrayOfObservables) 来实现。问题是,有时这个数组会发生变化,并且可观察对象也应该订阅新的可观察对象。

最佳答案

您可以将新的 Observables 推送到数组,然后发出该数组并使用 switchMap 订阅它们。

import { of, merge, BehaviorSubject } from 'rxjs'; 
import { switchMap } from 'rxjs/operators';

const s = new BehaviorSubject([of(1), of(2), of(3)]);

s.pipe(
  switchMap(array => merge(...array)),
).subscribe(x => console.log(x));

s.next([...s.getValue(), of(4)]);

现场演示:https://stackblitz.com/edit/rxjs-vmcqs9

关于RxJS 动态可观察源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59916768/

相关文章:

javascript - 如何手动抛出可观察到的错误?

javascript - Angular 2 - 在 View 中操作 rxjs Observable

javascript - RxJS ReplaySubject 观察者长度在下一个之后不会增加

angular - 如何组合多个 Observables 并在单个订阅中获取所有结果

javascript - 如何单独监听 x 滚动和 y 滚动的滚动事件

javascript - Angular - 使用 mergeMap 从 2 个 API 获取数据并将它们保存在数组中

rxjs - 多个订阅嵌套在一个订阅中

angular - 如何在不需要 rxjs-compat 的情况下只导入 RxJS 6 中使用的运算符,如旧的 RxJS?

angular - 问题是 : Property 'switchMap' does not exist on type 'Observable<User>

testing - RxJs 大理石测试 : Assertion fail log hard to understand