Observable
という2つのシーケンス、すなわちObservable1
とObservable2
があります。これらは両方とも分離したスケジューラー上で実行されます。RxJava - Observableが完了するのを待つ
Observable1
は、データベースからデータをフェッチしますが、Observable2
は、サーバーから同じデータをフェッチします。
これらの2つの結果は、被験者を用いてObserver
に送信される。
インターネットに接続できない場合、Observable2
は、Observable1
がonNext()
イベントを送信する前にonError()
を実行します。
Observable1
がonNext()
イベントを発生させるのを待つ方法Observable2
が発光しますか?あなただけの各観測の終わりに.onErrorResumeNext(Observable.empty())
を追加し、エラーコードを気にしない場合は
Observable1 = dataRepo.getItems().doOnNext({ serializedSubject.onNext(items)}).subscribeOn(Schedulers.io());
Observable2 = cloudRepo.getItems().doOnNext({ dataRepo.addAll(items) dataRepo.getItems().subscribe(serializedSubject)}). subscribeOn(Schedulers.io());
Observable.mergeDelayError(Observable1, Observable2) .subscribeOn(Schedulers.io()).subscribe(new Subscriber());
マージoperator.httpを使用してみましたが://reactivex.io/documentation/operators/merge.html – blackpanther
は@blackpantherありがとうございます。私はそれがmergeDelayError演算子を使用して働くことができると思う。それを試してみます:) – vishnus
遅延付きマージはonNextの前にonErrorを発行します。 ?。。:(私はonExceptionResumeNext試したUnknownHostExceptionがのような特定の例外をキャッチする方法はあり – vishnus