У меня есть несколько связанных наблюдаемых с использованием flatMap, таких как
api.call1()
.flatMap{a-> api.call2(a)}
.flatMap{b-> api.call3(a,b) //<- no access to a}
проблема в том, что при третьем каскадном вызове мне нужно то, что я получил от предыдущего, а также результат первого
это схема:
A -> (a) -> B -> (b) -> C (необходимо b , но также a ) -> ...
Я пытаюсь решить это так:
1 подход (вложенный 3-й наблюдаемый внутри 2-го)
api.call1()
.flatMap{a-> api.call2(a).flatMap{b-> api.call3(a,b)}}
это работает, но я знаю, что это не очень хороший подход (из-за передачи parms извне трубы)
2 подход (лучше, но много шаблонного)
api.call1().flatMap{ a->
Observable.combineLatest(Observable.just(a),api.call2(a),
BiFunction{ a,b -> Pair(a,b)})
.flatMap(pair:Pair<A,B> -> api.call3(pair.first,pair.second))
}}
кто-нибудь знает лучший подход (какой-то оператор моды)
Спасибо всем извините за мои бедные англ.