为了账号安全,请及时绑定邮箱和手机立即绑定

使用 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 关注
  • 68 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信