[英]Concatenated Observables (RxJava ) with flapMap
我有一些使用flatMap的串聯可觀察到的,例如
api.call1()
.flatMap{a-> api.call2(a)}
.flatMap{b-> api.call3(a,b) //<- no access to a}
問題是,在第三次串聯呼叫中,我需要從上一個呼叫中獲得的結果,但也需要從第一個呼叫中獲得的結果
這是在方案:A - >的(a) - >乙- >(B) - > C(需要B而也是 ) - > ...
我試圖像這樣解決它:
1種方法(在第二種方法中嵌套了第三種方法)
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))
}}
任何人都知道更好的方法(一些時尚經營者)
謝謝大家為我的可憐而煩惱。
flatMap
的第二個重載同時接受了輸入和輸出。 然后,您可以將它們組合Pair
以發送到下一個flatMap
api.call1()
.flatMap(
{ a -> api.call2(a) },
{ a, b -> new Pair(a, b) }
)
.flatMap { pair-> api.call3(pair.first, pair.second) }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.