亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 flapMap 連接 Observables (RxJava)

使用 flapMap 連接 Observables (RxJava)

慕標琳琳 2023-01-05 17:26:11
我有一些使用 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 種方法(在第二個中嵌套了第三個可觀察對象)api.call1()    .flatMap{a-> api.call2(a).flatMap{b-> api.call3(a,b)}}它有效,但我知道這不是一個好方法(因為從管道外部傳遞參數)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))}}任何人都知道更好的方法(一些時尚運營商)謝謝大家為我可憐的英格斯感到抱歉。
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

有第二個重載,flatMap它同時接受輸入和輸出。然后您可以將這些組合成一個Pair發送到下一個flatMap


api.call1()

    .flatMap( 

        { a -> api.call2(a) },

        { a, b -> new Pair(a, b) }

    )

    .flatMap { pair-> api.call3(pair.first, pair.second) }


查看完整回答
反對 回復 2023-01-05
  • 1 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號