错误时CompletableEmitter引发OnErrorNotImplementedException

时间:2019-03-06 01:53:36

标签: rx-java rx-java2 emitter

我有一个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)

这里有什么问题吗?

0 个答案:

没有答案