我有一些使用 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))
}}
任何人都知道更好的方法(一些时尚运营商)
谢谢大家为我可怜的英格斯感到抱歉。
慕田峪9158850
相关分类