Reputation: 728
I have two Observable
sequences namely Observable1
and Observable2
. They both are executed on separated schedulers.
Observable1
fetches data from the database whereas Observable2
fetches the same data from the server.
The result of these two Observable
sequences is sent to the Observer
using a subject.
Now if there is no internet connectivity, then Observable2
executes onError()
before Observable1
could post its onNext()
event.
How to wait for Observable1
to emit its onNext()
event before Observable2
starts emitting?
Here's some code:
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());
Upvotes: 0
Views: 1844
Reputation: 16142
If you just don't care about error codes, add .onErrorResumeNext(Observable.empty())
at the end of each Observable; you'll just need the normal merge
operator.
Upvotes: 2