N sequenzielle API-Aufrufe mit RxJava und Retrofit machen

9

Ich habe eine Liste von Dateien, die ich von einem Android-Gerät in das Backend hochladen möchte. Aufgrund von Speicherbeschränkungen möchte ich den zweiten API-Aufruf erst nach dem ersten, dem dritten nach dem zweiten und so weiter machen.

Ich habe etwas wie

geschrieben %Vor%

Aber ich glaube, das könnte gegen den Geist von Rx gehen, und das Sprichwort ist, wenn Sie Observable.create verwenden, machen Sie es wahrscheinlich falsch ... Ist das ein vernünftiger Ansatz? Gibt es einen besseren Weg, dies mit Retrofits RxJava-Integration zu erreichen?

    
Major Laslo 31.08.2015, 17:52
quelle

3 Antworten

4

Naiv, würde ich das tun (es funktioniert aber nicht, siehe unten):

%Vor%

Nun besteht das Problem, dass es keine Möglichkeit gibt, Retrofit mitzuteilen, nur einen Thread für diese Anrufe zu verwenden.

reduce übergibt jedoch das Ergebnis eines Funktionsaufrufs zusammen mit dem nächsten vom ursprünglichen Observablen ausgegebenen Wert an den nächsten. Das würde funktionieren, aber die an reduce übergebene Funktion muss synchron sein. Nicht gut.

Ein anderer Ansatz wäre, die Observable rekursiv zu modifizieren:

%Vor%

ungefähr. Aber ich bin mir nicht sicher, wie ich es reinigen soll, um es lesbarer zu machen.

Das sauberste, was ich denken würde, wäre etwa so:

%Vor%     
njzk2 31.08.2015, 18:23
quelle
0

Die Eingeborenen von RxJava würden alle Gegenstände in Observable.from(...) so aussenden, als ob sie parallel wären. Das ist der beste Weg, um es als parallele Emission zu betrachten. Einige Fälle erfordern jedoch eine konsequente Ausführung der gesamten Kette. Ich bin zu folgender Lösung gekommen, wahrscheinlich nicht die beste, aber funktionierend.

%Vor%

Beispiel Verwendung wäre:

%Vor%

Diese Methode garantiert verkettete Ausführungen von

Observable<Dummy> someFunctionReturnsObservable(Model model)

    
jozh 10.11.2015 15:37
quelle
0

Gegenwärtig ist die bevorzugte Methode zum Erstellen von Observablen mit fromAsync:

%Vor%     
box 27.09.2016 07:46
quelle

Tags und Links