Concat Observables разных типов

У меня есть сетевой вызов, который аутентифицирует и получает токен, и второй, который, используя этот токен, запрашивает данные.

Я хочу объединить их в Single<Data>. Для этого я смотрел на concat, но, похоже, это работает только для Observable того же типа. Используя zip, я мог бы вернуть только ответ второго Observable, но, насколько я понимаю, он работает параллельно, пока мне нужно дождаться первого Observable и обработать его ответ, прежде чем я смогу запустить второй.

Какой оператор я должен использовать для этого случая?


person ferbeb    schedule 22.02.2017    source источник


Ответы (1)


Поскольку токен запроса и данные запроса являются зависимыми шагами, используйте flatMap:

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

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

Применение:

Single<Data> data = getToken(user, pass).flatMap(token -> getData(token))
person Dmitry Gorkovets    schedule 22.02.2017