Sto tentando di creare un osservabile concatenando più chiamate di retrofit api. I passi sono:Utilizzo di RxJava + Retrofit per effettuare richieste API per ciascun elemento in un elenco
- ottenere un elenco di oggetti JSON utilizzando API chiamata
- Per ogni oggetto nella lista, effettuare un'altra chiamata API per ulteriori dettagli sulla voce
- dati Scrittura tratto da questo nuovo dettagliata oggetto in un file sul disco (questo si verifica per ogni elemento della lista)
- Infine restituire un osservabile di un oggetto separato che richiede che un file è stato creato per ciascuno degli oggetti precedenti
questo è ciò che Ho finora:
public static Observable<DownloadedFiles> downloadFiles() {
DownloadedFiles downloadedFiles = new DownloadedFiles();
Observable.create(subscriber -> {
return getRestService().getObjectList()
.flatMapIterable(objects -> objects)
.flatMap(objectLimited -> getRestService().getObject(objectLimited.getPath()))
.doOnNext(objectFull -> {
try {
File file = new File();
// Extract data from objectFull and write new file to disk
// ...
} catch (IOException e) {
subscriber.onError(e);
}
downloadedFiles.putFile(file);
})
.toList()
.map(objects -> downloadedFiles)
.finallyDo(() -> {
subscriber.onNext(downloadedFiles);
subscriber.onCompleted();
});
});
}
@GET("/api/...")
Observable<List<Object>> getObjectList();
@GET("/api/.../{path}")
Observable<Object> getObject(@Path("path") String path);
Qualcuno potrebbe confermare che ho utilizzato gli operatori corretti. Grazie .
È un po 'difficile dire che utente è nell'esempio? – alexwen
@alexwen, scusa mi mancava una linea. Ho modificato l'esempio. – user3307102