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);