Rx java 一个订户的多个观测值
我需要使用来自多个源的事件。源的数量各不相同,一个源可能会被添加或删除 由于我希望能够“动态”更改源集,而无需重新订阅,Rx java 一个订户的多个观测值,rx-java,Rx Java,我需要使用来自多个源的事件。源的数量各不相同,一个源可能会被添加或删除 由于我希望能够“动态”更改源集,而无需重新订阅,merge 我试过类似的东西 PublishSubject<Integer> sourcesSubject = PublishSubject.create(); sourcesSubject.subscribe(...); Observable<Integer> source1 = ...; source1.subscribe(sourcesSubj
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?
PublishSubject sourcesObject=PublishSubject.create();
sourcesObject.subscribe(…);
可观测源1=。。。;
source1.订阅(sourcesObject);//添加第一个源
可观测源2=。。。;
source2.订阅(sourcesObject);//添加第二个源
..... // 如何删除源?
但不知道如何删除源
有一个简单的解决方案吗?找到了删除源代码的最简单方法:
Observable<Integer> source = ...;
Subscription subscription = source.subscribe(sourcesSubject); // add source
subscription.unsubscribe(); // remove source
可观测源=。。。;
订阅订阅=源。订阅(SourcesObject);//添加源
订阅。取消订阅();//删除源
找到了删除源代码的最简单方法:
Observable<Integer> source = ...;
Subscription subscription = source.subscribe(sourcesSubject); // add source
subscription.unsubscribe(); // remove source
可观测源=。。。;
订阅订阅=源。订阅(SourcesObject);//添加源
订阅。取消订阅();//删除源
我建议考虑组合操作符,如merge
(和实例变量mergeWith
)或concat
(concatWith
),这样就不需要使用Subject
。当您取消订阅时,所有源代码都将停止。我建议查看组合运算符,如merge
(和实例变量mergeWith
)或concat
(concatWith
),这样就不需要使用Subject
。当您取消订阅时,所有来源都将停止。这听起来像是XY问题。你想要这个的原因是什么?闻起来像是XY问题。你想要这个的原因是什么?