Rx java rxjava一旦开始发射,就会发射内部可观测数据

Rx java rxjava一旦开始发射,就会发射内部可观测数据,rx-java,reactive-programming,Rx Java,Reactive Programming,有没有什么简单的方法可以创建一个可观测的可观测对象,它只会在内部可观测对象发射一次后发射?例如: 假设我们有一个神奇的观察物可以做到这一点 Observable<Observable<Integer>> magicOuterObservable; 提供内部可观察到的外部 magicOuterObservable.subscribe(subscriber) magicOuterObservable.onNext(inner); 还没有 subscriber.asser

有没有什么简单的方法可以创建一个可观测的可观测对象,它只会在内部可观测对象发射一次后发射?例如:

假设我们有一个神奇的观察物可以做到这一点

Observable<Observable<Integer>> magicOuterObservable;
提供内部可观察到的外部

magicOuterObservable.subscribe(subscriber)
magicOuterObservable.onNext(inner);
还没有

subscriber.assertNoValues();
提供内部可观察的价值

inner.onNext(1)
外发射

subscriber.assertValue(inner);
终端事件不会导致排放。只有第一次真正的内部排放

有什么想法吗


如果有人好奇,这可能是一个过度设计的拉刷新处理程序。

我找到了一个足够合理的解决方案,如果有人想知道,它看起来像这样:

innerSubject
    .map(inner -> inner.replay().autoConnect())
    .flatMap(inner -> Observable.create(emitter ->
        inner.take(1).subscribe(ignored -> e.onNext(inner))));

我认为在订阅管理方面需要做一些工作,这取决于如何使用订阅,因为显然内部订阅应该绑定到外部订阅。

我认为
可观察。创建(发射器->内部.take(1).订阅(忽略->e.onNext(内部))
最好是
内部.take(1).映射(忽略->内部)