我需要触发几个可观察的可观察的类,然后知道它们的所有类都已达到onCompleted
状态。
我当前的appraoch是通过在启动时将它们添加到集合来跟踪RxJava observable的完成,然后我想在它们的onCompleted()方法触发时从集合中删除它们。
如何从onCompleted获取可观察对象本身?
我订阅如此:
c.event().subscribe(this);
this
表示的对象实现了Observer,并且具有onCompleted
方法。
如何在this.onCompleted()
中获取可观察目标?
根据Tassos Bassoukos的建议,我尝试了以下解决方案,但它没有做任何事情:
Set<Observable<Void>> obs = new HashSet<Observable<Void>>();
//...
c.event().subscribe(this);
obs.add(c.event());
c2.event().subscribe(this);
obs.add(c2.event());
//...
Observable.merge(obs).lastOrDefault(null).doOnNext(foo -> {
System.out.println("All Observers Done");
});
所有观察者完成消息永远不会打印,尽管每个观察者都已达到onCompleted()方法。
答案 0 :(得分:1)
我需要触发几个可观察的类来进行操作,然后知道它们何时都达到了onCompleted状态。
Observable.merge(A,B,C).lastOrDefault(null).doOnNext(dummy -> {...})
但是,您可能希望使用函数样式,如果源可观察元素具有相同数量的元素,并且您希望对其结果执行某些操作:
Observable.zip(A,B,C, (a,b,c) -> {....});
编辑:哦,现在我明白了 - 试试这个:
Observable
.merge(c1.ecent(), c2.event())
.doOnCompleted(() -> System.out.println("All Observers Done"))
.subscribe(this);