我想要一个Observable,除了订阅时,不会执行任何操作,调用观察者的onNext回调。我想我发现使用Observable.empty(),但以下内容不会导致调用观察者的onNext回调:
Observable<Void> emptyObservable = Observable.empty();
emptyObservable.subscribe(passedinObserver);
定义了passInObserver:
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");
}
};
答案 0 :(得分:3)
您可以使用Observable.just(null)
或任何值,因为您无论如何都要输入值。但是,当值通过可观察序列时,您似乎希望执行其他工作,因此您可以使用doOnNext()
:
Observable.range(1, 10)
.doOnNext(v -> Log.d("onNext called"))
.map(v -> v * v)
.subscribe(System.out::println);
答案 1 :(得分:1)
onNext
没有被调用,onCompleted
会对此类Observable
进行调用。
答案 2 :(得分:1)
除其他答案外,由于empty
仅调用onCompleted
而未调用onNext
,因此您可能只想在onCompleted
而不是{{1}中完成工作}}?
答案 3 :(得分:0)
试试Observable.just(...)
。它将返回一个值,从而调用.onNext(...)
。