我已经开始学习RxAndroid,并且了解了不同运算符的反应性编程方法和力量,比如平板地图、地图和xmap。
我有以下情况,我有一个报告列表,比如List<Reports>
(在运行时获得)。我必须按序列(API 1、-> API 2、-> API 3)对报表进行3个API调用,并对序列中的所有报告重复相同的过程。
示例:对于报表A
、B
、C,
和List<Reports>
中的D
,对A
进行3个API调用,然后对B
进行调用,然后对C
进行调用,然后对D
进行调用。如果有3个API调用的报表失败,则停止其余调用并继续进行下一次报告。在这里,只在运行时才知道List<Reports>
的大小。
如何使用RXjava来解决这个问题?
发布于 2020-05-30 00:15:40
假设您有4个API调用,理想情况下,combineLatest
操作将返回Reports
类型。
Observable<Report> result = Observable.combineLatest(
apiA,
apiB,
apiC,
apiD,
(respA, respB, respC, respD) -> respA + respB + respC + respD
)
.subscribeOn(
....
要实现顺序顺序,您需要将它们包装在flatMap
操作中:
Observable o = Observable.just(.....)// your initial data
o
.flatMap(value -> doCombineLatestOperation(value))
.subscribe(resp -> //Deal with data);
希望这能有所帮助。
https://stackoverflow.com/questions/62099345
复制相似问题