Ich verwende Retrofit mit Observablen und möchte die Observablen verketten. Normalerweise funktioniert es gut mit Funktionen wie map()
oder flatMap()
, da das api
ein Observable zurückgibt, das die Aufgabe erledigt. Aber in diesem Fall muss ich Folgendes tun:
api
Foo
und warten Sie, bis der Rückruf aufgerufen wird. api
. Ich möchte, dass es sich um einen einzelnen Anruf handelt, so dass ich mich nur einmal anmelden muss. Ich schätze, ich kann merge()
oder join()
oder etwas verwenden, war mir aber nicht sicher, wie der Callback am besten aussehen würde.
Gibt es eine Möglichkeit, das besser zu machen? Das habe ich bisher:
%Vor% Anpassung von clemp6r's Lösung, hier ist eine weitere, die weder Subjects
noch nested Subscriptions
benötigt:
Im Allgemeinen halte ich es immer für möglich, irgendeinen Callback-basierten asynchronen Vorgang in einem Observable
mit Observable.create()
zu umbrechen.
Beispiel für das vollständige anonyme Klassenbeispiel
Diese Implementierung passt die Antwort von david.mihola an, indem sie die Typen Single
und Completable
zusammen mit flatMapCompletable()
verwendet, während sie typsicher / spezifisch ist.
Tags und Links android reactive-programming rx-java rx-android observable