2017-09-12 8 views
0

私はonNextを呼び出してからonErrorメソッドを呼び出したいと思います。しかし、私はそれをすることはできません。誰か助けてくれますか?例:RxJava。 onNextの後にonErrorを呼び出す

Observable.create(new ObservableOnSubscribe<String>() { 
    @Override 
    public void subscribe(ObservableEmitter<String> e) throws Exception { 
     e.onNext("value"); 
     e.onError(new Exception("exc")); 
    } 
}) 
     .subscribeOn(Schedulers.io()) 
     .observeOn(AndroidSchedulers.mainThread()) 
     .subscribe(new Consumer<String>() { 
      @Override 
      public void accept(@NonNull String s) throws Exception { 
       Log.v("TAG", s); 
      } 
     }, new Consumer<Throwable>() { 
      @Override 
      public void accept(@NonNull Throwable throwable) throws Exception { 
       Log.v("TAG", throwable.getLocalizedMessage()); 
      } 
     }); 

出力:EXC

Thrad.sleep(500)が私を助け、私はあなたがobserveOnオペレータにそれをdelayError = trueを指定しない場合、これは間違った方法

答えて

1

だと思いますあらかじめ呼び出されたonNextが出て終了する前に、終了したかどうかを確認します(onErrorが呼び出されました)。

参照ドキュメント:

delayError - のonError通知がスケジューリング境界の他の側に控えonNext通知の切断しない可能性がある場合を示しています。 trueの場合、onErrorで終わるシーケンスは、上流から受信したのと同じ順序で再生されます。

関連する問題