[我已经开始学习RxAndroid,并且已经了解了反应式编程方法以及平面图,地图和xmap等不同运算符的功能。
我有以下情况,我有一份报告说List<Reports>
(在运行时获取)。我必须对sequence(API 1-> API 2-> API 3)中的报告进行3个API调用,并对序列中的所有报告重复相同的过程。
示例:对于A
中的报告B
,C,
,D
和List<Reports>
,对A
,然后对B
,然后对C
和D
进行3个API调用。如果3个API调用中的任何一个都无法生成报告,则停止剩余的调用并继续下一个报告。这里List<Reports>
的大小仅在运行时已知。
如何使用RXjava解决此问题?
假设您有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);
希望有所帮助。