多个可观察的一个订户

时间:2017-06-05 15:41:44

标签: rx-java

我需要消耗来自多个来源的事件。来源的数量各不相同,可能会添加或删除来源。

由于我希望有可能随时更改一组来源,而无需重新订阅,merge不是一个案例。

尝试了类似

的内容
PublishSubject<Integer> sourcesSubject = PublishSubject.create();

sourcesSubject.subscribe(...);

Observable<Integer> source1 = ...;
source1.subscribe(sourcesSubject); // add first source

Observable<Integer> source2 = ...;
source2.subscribe(sourcesSubject); // add second source

..... // How to remove a source?

但不知道如何删除来源。

有简单的解决方案吗?

2 个答案:

答案 0 :(得分:1)

我建议您考虑合并merge(以及实例变体mergeWith)或concatconcatWith)之类的运算符,这样就无需使用{{1 }}。当您取消订阅时,所有来源都将被停止。

答案 1 :(得分:0)

找到了删除源的最简单方法:

Observable<Integer> source = ...;
Subscription subscription = source.subscribe(sourcesSubject); // add source
subscription.unsubscribe(); // remove source