有没有简单的方法来创建一个只能在内部observable发出时才会发出的observable的可观察对象?例如:
说我们有一个神奇的观察者可以做到这一点
Observable<Observable<Integer>> magicOuterObservable;
订阅外部
magicOuterObservable.subscribe(subscriber)
向内部
提供内部可观察性magicOuterObservable.onNext(inner);
什么都没有
subscriber.assertNoValues();
为内部可观察的
提供价值inner.onNext(1)
外部发出
subscriber.assertValue(inner);
终端事件不会导致发射。只有第一次内部排放真的。
有什么想法吗?
如果有人好奇,这可能会过度设计拉动刷新处理程序。
答案 0 :(得分:0)
我找到了一个合理的解决方案,如果有人想知道,它看起来像这样:
innerSubject
.map(inner -> inner.replay().autoConnect())
.flatMap(inner -> Observable.create(emitter ->
inner.take(1).subscribe(ignored -> e.onNext(inner))));
我认为在订阅管理方面还有一些工作要做,具体取决于使用方式,因为很明显内部订阅应该绑定到外部订阅。