Ich benutze RxJava in und Android-Anwendung mit RxAndroid. Ich verwende mergeDelayError, um zwei Retro-Fit-Netzwerkaufrufe zu einer Observablen zu kombinieren, die ausgegebene Elemente verarbeiten wird, wenn eines ausgegeben wird, und den Fehler, wenn es eins hat. Dies funktioniert nicht und es wird nur die Aktion onError ausgelöst, wenn ein Fehler auftritt. Nun, um das zu testen, habe ich ein sehr einfaches Beispiel gewählt und immer noch wird die successAction nie aufgerufen, wenn ich einen onError-Aufruf habe. Siehe Beispiel unten.Rx Java mergeDelayError funktioniert nicht wie erwartet
Die Erfolgsaktion wird nur aufgerufen, wenn ich zwei Erfolgsobservablen verwende. Fehle ich etwas mit wie mergeDelayError funktionieren soll?
EDIT:
ich gefunden habe, dass, wenn ich die observeOn
und subscribeOn
alles entfernen wie erwartet funktioniert. Ich muss Threads angeben und dachte, dass das der Sinn von Rx ist. Irgendeine Idee, warum das Spezifizieren dieser Schedulers
das Verhalten brechen würde?
das doc sagt 'eine onError-Benachrichtigung von irgendeinem der Quellobservablen wird (...) das zusammengeführte Observable beenden. 'scheint klar aus dem Diagramm, dass jeder Fehler verzögert wird, bis alle anderen abgeschlossen sind, und Dann wird gefeuert und das Observable beendet, ohne dass es abgeschlossen ist. – njzk2
so sollte man tatsächlich einmal die 'successAction', dann die Fehleraktion erhalten. (aber nicht die komplette) – njzk2
Wie behaupten Sie, dass Erfolg nicht genannt wird? – njzk2