多个可观察到的一个用户
问题描述:
我需要消耗来自多个来源的事件。源的数量可能会有所不同,源可能会被添加或删除。多个可观察到的一个用户
由于我希望有可能在不需要重新订阅的情况下更改一组资源,因此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?
,但不知道如何删除源。
有没有简单的解决方案?
答
有没有发现删除源最简单的方法:
Observable<Integer> source = ...;
Subscription subscription = source.subscribe(sourcesSubject); // add source
subscription.unsubscribe(); // remove source
答
我建议看看结合运营商如merge
(和实例变种mergeWith
)或concat
(concatWith
),这将消除需要使用Subject
。当您取消订阅时,所有来源将停止。
这味道像一个XY问题。你想要这个的原因是什么? –