我需要消耗来自多个来源的事件。来源的数量各不相同,可能会添加或删除来源。
由于我希望有可能随时更改一组来源,而无需重新订阅,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?
但不知道如何删除来源。
有简单的解决方案吗?
答案 0 :(得分:1)
我建议您考虑合并merge
(以及实例变体mergeWith
)或concat
(concatWith
)之类的运算符,这样就无需使用{{1 }}。当您取消订阅时,所有来源都将被停止。
答案 1 :(得分:0)
找到了删除源的最简单方法:
Observable<Integer> source = ...;
Subscription subscription = source.subscribe(sourcesSubject); // add source
subscription.unsubscribe(); // remove source