2016-09-05 8 views
0

Observableという2つのシーケンス、すなわちObservable1Observable2があります。これらは両方とも分離したスケジューラー上で実行されます。RxJava - Observableが完了するのを待つ

Observable1は、データベースからデータをフェッチしますが、Observable2は、サーバーから同じデータをフェッチします。

これらの2つの結果は、被験者を用いてObserverに送信される。

インターネットに接続できない場合、Observable2は、Observable1onNext()イベントを送信する前にonError()を実行します。

Observable1onNext()イベントを発生させるのを待つ方法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());

+1

マージoperator.httpを使用してみましたが://reactivex.io/documentation/operators/merge.html – blackpanther

+0

は@blackpantherありがとうございます。私はそれがmergeDelayError演算子を使用して働くことができると思う。それを試してみます:) – vishnus

+0

遅延付きマージはonNextの前にonErrorを発行します。 ?。。:(私はonExceptionResumeNext試したUnknownHostExceptionがのような特定の例外をキャッチする方法はあり – vishnus

答えて

1

;:ここ

は、いくつかのコードです通常のmergeオペレータが必要です。

+0

は、あなたの助けにTassosありがとうしかし、私は、私はonNextを取得した後、エラーを処理する必要が参考のためにいくつかのサンプルコードを投稿が、それはすべての例外を処理します。 ( – vishnus

+0

はそれを発見した。OnErrorResumeNextに関数を渡し、関数に渡されたThrowableインスタンスの種類を確認することができます。 – vishnus

+0

確かに。http://stackoverflow.com/questions/39043561/looking-for-a-で私の答えを参照してください。クリーン・ウェイ・ツー・ハンドル・エラー・イン・rxjava/39050943#39050943 –

関連する問題