【问题标题】:RXAndroid/RXJava2: Chain three retrofit requests and repeat the same process againRXAndroid/RXJava2:链接三个改造请求并再次重复相同的过程
【发布时间】:2023-04-04 07:37:01
【问题描述】:

我已经开始学习 RxAndroid,并且了解响应式编程方法和不同运算符(如 flatmap、map 和 xmap)的强大功能。

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

示例: 对于List<Reports> 中的报告ABC,D,对AB 进行3 API 调用,然后对CD 进行调用。如果 3 个 API 调用中的任何一个调用失败,则停止剩余调用并继续下一个报告。这里List<Reports> 的大小只有在运行时才知道。

如何使用 RXjava 来解决这个问题?

【问题讨论】:

  • 是的,我已经检查过了。在那种情况下不存在再次重复该过程的条件。
  • 你能发布一些代码吗?
  • 我确实明白了,这就是我删除该评论的原因。我的坏
  • @NjugunaMureithi 我没有 RXjava 形式的代码。我已经提供了明确的要求。

标签: android reactive-programming rx-java2 rx-android


【解决方案1】:

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

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2017-09-07
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2014-10-20
    • 1970-01-01
    • 2011-10-09
    相关资源
    最近更新 更多