我想要一个不做任何事情的可观察量,除了在订阅时,观察者的onNext回调被调用。 我想我发现使用 Observable.empty() 是这样的,但以下内容不会导致调用观察者的 onNext 回调:
Observable<Void> emptyObservable = Observable.empty();
emptyObservable.subscribe(passedinObserver);
passedInObserver 被定义为:
Observer<Void> passedinObserver = new Observer<Void> {
@Override public void onCompleted() {
}
@Override public void onError(Throwable e) {
}
@Override public void onNext(Void aVoid) {
Log.d("onNext called");
}
};
Observable.just(null)
或任何值,因为无论如何您都会摄取该值。但是,当值通过可观察序列时,您似乎希望执行其他工作,因此您可以使用doOnNext()
:
Observable.range(1, 10)
.doOnNext(v -> Log.d("onNext called"))
.map(v -> v * v)
.subscribe(System.out::println);
onNext
不会被调用,onCompleted
这种类型的Observable
被调用。
其他答案的替代,由于empty
只调用onCompleted
而不调用onNext
,也许您只想在onCompleted
而不是onNext
中完成工作?
尝试Observable.just(...)
.它将返回一个值,从而调用.onNext(...)
。