我有一个Android应用程序,并且使用getValue函数创建了Completable,并且订阅了getValue()的返回值Completable。
Completable getValue(){
Completable.create(
emitter -> {
int result = getResult();
if(result == 1){
emitter.onComplete();
}
else{
emitter.onError();
}
})
.doOnError(t -> Log.i(" Completable ", "Error"));
}
Blockquote
getValue()
.subscribeOn(Schedulers.io)
.toObservable()
.materialize()
.subscribe(new CompletableObserver() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onComplete() {
Log.i("Completable ","onComplete");
}
@Override
public void onError(Throwable e) {
Log.i("Completable ","error");
}
});
每次我调用getValue且result = 1时,onComplete()都会在日志中打印。 但是当result!= 1时,永远不会调用onError。 相反,我得到一个异常OnErrorNotImplementedException。 我在日志中看到doOnError()中的Log正在打印。
Blockquote
当我看到异常日志时,它显示如下
io.reactivex.exceptions.OnErrorNotImplementedException
at io.reactivex.internal.observers.EmptyCompletableObserver.onError(EmptyCompletableObserver.java:51)
at io.reactivex.internal.operators.completable.CompletableCreate$Emitter.tryOnError(CompletableCreate.java:90)
at io.reactivex.internal.operators.completable.CompletableCreate$Emitter.onError(CompletableCreate.java:76)
这里有什么问题吗?