2017-02-22 3 views
2

Ich habe einen Netzwerkaufruf, der ein Token authentifiziert und empfängt, und einen zweiten, der mit diesem Token Daten anfordert.Concat Observables verschiedener Typen

Ich möchte diese in eine Single<Data> kombinieren. Um dies zu tun, schaute ich auf concat, aber dies scheint nur für Observable des gleichen Typs zu arbeiten. Mit zip konnte ich nur die Antwort des zweiten Observable zurückgeben, aber zu meinem Verständnis funktioniert es in paralell, während ich auf den ersten Observable warten muss und seine Antwort behandeln muss, bevor ich den zweiten beginnen kann.

Was wäre der Operator, den ich für diesen Fall verwenden sollte?

Antwort

4

Da Anforderungs-Token und Anforderungsdaten sind abhängig Schritte dann flatMap verwenden:

Observable<String> getToken(String user, String password) { 
    ... 
} 

Single<Data> getData(String token) { 
    ... 
} 

Verbrauch:

Single<Data> data = getToken(user, pass).flatMap(token -> getData(token)) 
+0

Perfect, danke. – ferbeb

Verwandte Themen