Uso Retrofit con Observables e desidero concatenare gli osservabili. Di solito funziona bene con funzioni come map()
o flatMap()
, poiché lo api
restituisce un Osservabile che esegue l'operazione. Ma in questo caso devo fare quanto segue:Concatenamento di osservabili RxJava con richiamate/ascoltatori
- getKey() dal
api
- Utilizzare il tasto restituito in un'altra libreria
Foo
e attendere che il callback per essere chiamato. - Quando viene restituita la richiamata, inviare il risultato a
api
.
Mi piacerebbe che fosse una chiamata concatenata, quindi devo solo iscrivermi una volta. Immagino di poter usare merge()
o join()
o qualcosa del genere, ma non ero sicuro di quale sarebbe l'approccio migliore per gestire il callback.
C'è un modo per migliorarlo? Questo è quello che ho finora:
api.getKey().subscribe(new Action1<String>() {
@Override
public void call(String key) {
Foo foo = new Foo();
foo.setAwesomeCallback(new AwesomeCallback() {
@Override
public void onAwesomeReady(String awesome) {
api.sendAwesome(awesome)
.subscribe(new Action1<Void>() {
@Override
public void call(Void aVoid) {
handleAwesomeSent();
}
});
}
});
foo.makeAwesome();
}
});
Dove viene utilizzata la chiave? –