RXAndroid / RXJava2:链接三个改造请求并再次重复相同的过程

问题描述 投票:1回答:1

[我已经开始学习RxAndroid,并且已经了解了反应式编程方法以及平面图,地图和xmap等不同运算符的功能。

我有以下情况,我有一份报告说List<Reports>(在运行时获取)。我必须对sequence(API 1-> API 2-> API 3)中的报告进行3个API调用,并对序列中的所有报告重复相同的过程。

示例:对于A中的报告BC,DList<Reports>,对A,然后对B,然后对CD进行3个API调用。如果3个API调用中的任何一个都无法生成报告,则停止剩余的调用并继续下一个报告。这里List<Reports>的大小仅在运行时已知。

如何使用RXjava解决此问题?

android reactive-programming rx-java2 rx-android
1个回答
0
投票

假设您有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);

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.