Java 在未完成状态下获取可观察目标
我需要触发几个可观察的类,这些类是可观察的,然后知道它们何时都达到了Java 在未完成状态下获取可观察目标,java,rx-java,Java,Rx Java,我需要触发几个可观察的类,这些类是可观察的,然后知道它们何时都达到了onCompleted状态 我目前的做法是跟踪RxJava观察对象的完成情况,方法是在它们启动时将它们添加到一个集合中,然后在其onCompleted()方法触发时将它们从集合中删除 如何从“未完成”中获取可观察对象本身 我是这样订阅的: c.event().subscribe(this); 由this表示的对象实现了Observer,并且具有onCompleted方法 如何在this.onCompleted()中获取可观察目
onCompleted
状态
我目前的做法是跟踪RxJava观察对象的完成情况,方法是在它们启动时将它们添加到一个集合中,然后在其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");
});
Set obs=new HashSet();
//...
c、 event().subscribe(这个);
obs.add(c.event());
c2.事件().订阅(此);
obs.add(c2.event());
//...
Observable.merge(obs).lastOrDefault(null).doOnNext(foo->{
System.out.println(“所有观察者完成”);
});
尽管每个观察者都已到达onCompleted()方法,但始终不会打印All Observators Done消息
我需要触发几个可观察类来执行操作,然后知道它们何时都达到了未完成状态
但是,如果源观测值具有相同数量的元素,并且您希望对其结果进行处理,则可能需要使用函数样式:
Observable.zip(A,B,C, (a,b,c) -> {....});
编辑:哦,现在我明白了-试试这个:
Observable
.merge(c1.ecent(), c2.event())
.doOnCompleted(() -> System.out.println("All Observers Done"))
.subscribe(this);
可能是远射:c.event()
?:)@marstran—我实际上使用了lambda来缩短示例,但它使它看起来像一个愚蠢的问题:)。我只是改变了问题以反映真实情况。我想我误读了。我想我读的是“可观察的”而不是“观察者”。这感觉像是一个XY问题;Rx运营商已经为你做了这件事——你到底为什么要做这件事?@TassosBassoukos我昨晚刚接触RxJava,所以我很容易就把它复杂化了。我需要触发几个可观察类来执行操作,然后知道它们何时都达到了未完成状态。请随意告诉我如何做这件事的资源。我试了一下,但它没有像我预期的那样工作。更新的问题。为什么您需要订阅此
观察值?我用一个可能适合您的解决方案编辑了我的答案。是的,就是这样。谢谢
Observable
.merge(c1.ecent(), c2.event())
.doOnCompleted(() -> System.out.println("All Observers Done"))
.subscribe(this);