Rx Java mergeDelayError funktioniert nicht wie erwartet
Ich verwende RxJava in und Android-Anwendung mit RxAndroid. Ich benutze mergeDelayError, um zwei Retrofit-Netzwerkaufrufe zu einer beobachtbaren Funktion zu kombinieren, die ausgestrahlte Elemente verarbeitet, wenn eines davon ausgestrahlt wird, und den Fehler, wenn eines davon vorliegt. Dies funktioniert nicht und löst die Aktion onError nur aus, wenn einer der beiden Fehler auftritt. Um dies zu testen, habe ich mich einem sehr einfachen Beispiel zugewandt und trotzdem wird die successAction nie aufgerufen, wenn ich einen onError-Aufruf habe. Siehe folgendes Beispiel.
Observable.mergeDelayError(
Observable.error(new RuntimeException()),
Observable.just("Hello")
)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.finallyDo(completeAction)
.subscribe(successAction, errorAction);
Die Erfolgsaktion wird nur aufgerufen, wenn ich zwei Erfolgsobservablen verwende. Fehlt mir etwas, wie mergeDelayError funktionieren soll?
BEARBEITEN
Ich habe festgestellt, dass, wenn ich das @ entfernobserveOn
undsubscribeOn
alles funktioniert wie erwartet. Ich muss Threads angeben und dachte, das war der springende Punkt bei der Verwendung von Rx. Jede Idee, warum diese @ angebSchedulers
würde das Verhalten brechen?