Dołączam dwa obserwowalne, aby wyświetlić dane z pamięci podręcznej, a po pierwsze rozpocząć ładowanie danych z sieci i pokazywać zaktualizowane dane.ReactXX concat nie produkuje OnNext z pierwszego obserwowalnego, jeśli sekunda nie powiedzie się natychmiast
Observable.concat(
getContentFromCache.subscribeOn(dbScheduler),
getContentFromNetwork.subscibeOn(networkScheduler)
).observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber);
Jeśli nie ma połączenia sieciowego, drugie obserwowalne zawiedzie natychmiast po wywołaniu funkcji OnSubscribe.
W przypadku, gdy druga obserwowalna natychmiast ulegnie awarii, dane z pierwszego obserwowalnego zostaną utracone. Metoda onNext nigdy nie jest wywoływana w subskrybencie.
myślę, że to może być z powodu następującego kodu w OperatorConcat.ConcatSubscriber
@Override
public void onNext(Observable<? extends T> t) {
queue.add(nl.next(t));
if (WIP_UPDATER.getAndIncrement(this) == 0) {
subscribeNext();
}
}
@Override
public void onError(Throwable e) {
child.onError(e);
unsubscribe();
}
wygląda po otrzymywał błędu jest to unsubscribes, a wszystko w oczekiwaniu onNext zostaną utracone.
Jaki jest najlepszy sposób na rozwiązanie mojego problemu?
Aktualizacja
Wygląda na to, znalazłem rozwiązanie, zamiast ustawiania observOn dla łączonych obserwowalne ustawić observOn dla każdego widoczne.
Czy kolejność pozycji jest dla ciebie ważna? – marwinXXII
Tak, to ważne. –