rxjava一旦开始发出

时间:2017-06-17 14:34:37

标签: rx-java reactive-programming

有没有简单的方法来创建一个只能在内部observable发出时才会发出的observable的可观察对象?例如:

说我们有一个神奇的观察者可以做到这一点

Observable<Observable<Integer>> magicOuterObservable;

订阅外部

magicOuterObservable.subscribe(subscriber)

向内部

提供内部可观察性
magicOuterObservable.onNext(inner);

什么都没有

subscriber.assertNoValues();

为内部可观察的

提供价值
inner.onNext(1)

外部发出

subscriber.assertValue(inner);

终端事件不会导致发射。只有第一次内部排放真的。

有什么想法吗?

如果有人好奇,这可能会过度设计拉动刷新处理程序。

1 个答案:

答案 0 :(得分:0)

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

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

我认为在订阅管理方面还有一些工作要做,具体取决于使用方式,因为很明显内部订阅应该绑定到外部订阅。