【发布时间】:2020-01-26 08:38:56
【问题描述】:
我想创建一个包含许多 observable 的 Observable(合并它们)。这可以通过merge(...arrayOfObservables) 来实现。问题是这个数组有时会被改变,并且 observable 也应该订阅新的 observables。
【问题讨论】:
我想创建一个包含许多 observable 的 Observable(合并它们)。这可以通过merge(...arrayOfObservables) 来实现。问题是这个数组有时会被改变,并且 observable 也应该订阅新的 observables。
【问题讨论】:
您可以将新的 Observable 推送到一个数组,然后发出该数组并使用 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)]);
【讨论】:
switchMap 将取消订阅,因此您可以改用 concatMap 或 mergeMap。
switchMap 对其进行了测试,效果很好。似乎没有跳过任何数据。但是在这种情况下是否有可能丢失数据?