簡體   English   中英

帶flaveMap的級聯可觀察對象(RxJava)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM