当前位置: 首页 > 知识库问答 >
问题:

rxjava->基于条件生成API请求

公孙新觉
2023-03-14

我的要求是这样的。

  1. 点击第一个API获得响应。在响应中,我有一个字段定义状态,如果设置了该标志,则进行另一个API调用并与第一个结果合并。
  2. 如果未设置该标志,则返回实际响应(第一个响应)。

我们如何使用RxJava、FlatMap和Filter来实现这一点呢?

共有1个答案

苍恩
2023-03-14

您不需要筛选器。只需检查flatmap中的状态。如果已设置,则激发请求并调用startwith将其与原始请求相连接(您可以用任何代码替换startwith,以便根据需要组合结果);如果不是,请使用just包装响应。这里有一个例子:

class MyResponse {

    boolean status;

    public MyResponse(boolean status) {
        this.status = status;
    }

    public static Observable<MyResponse> request() {
        return Observable.just(new MyResponse(false));
    }
}

Observable<MyResponse> response = Observable.just(new MyResponse(false));

response.first().flatMap(r -> {
        if (r.status) {
            return MyResponse.request().startWith(r);
        } else {
            return Observable.just(r);
        }
});
 类似资料:
  • 我使用的是Swashbuckle(5.3.2),它生成了一个很好的API文档。 PetController CarController WebApiConfig null 获取/api/pets post/api/pets 获取/api/pets/{id} carowner_api_key: 汽车 get/api/cars 邮政/API/CARS get/api/cars/{id} null nu

  • 此问题与几天前发布的问题类似,将行从0折叠到0 与前一个问题不同的是,我们如何根据Id折叠那些时间差小于或等于60的行。 例如,使用相同的数据集 这将通过ID计算时差 这将导致如下所示的新列差异 现在只按< code >事件折叠行。身份证明..其中时间差小于或等于60,即< code>diff 正在寻找有关如何创建这种折叠数据集的帮助。提前谢谢。

  • 主要内容:RxJava 条件运算符 介绍,RxJava 条件运算符 示例RxJava 条件运算符 介绍 以下是用于 Observable 的条件运算符。 运算符 描述 All 评估发出的所有项目以满足给定标准。 Amb 仅在给定多个 Observable 的情况下从第一个 Observable 发出所有项目。 Contains 检查 Observable 是否发出特定项目。 DefaultIfEmpty 如果 Observable 不发出任何内容,则发出默认项。 Se

  • 我有一张有科林斯的桌子 1 |姓名1 | 40 1 |姓名2 | 45 2 |姓名3 | 30 2 |姓名4 | 39 结果我想要这样 1 |名称1 | 40 | 2 |名称3 | 30 1 |名称2 |名称45 | 2 |名称4 | 39 大约有5公里行。 谢谢

  • 我有一个这样的数据集 我想创建列(visit_no)。每当间隙大于1时,我们需要在接下来的行中将visit_no值增加1,直到我们找到另一个值,它将保持不变 这是数据框架

  • 我是JavaFx的新手,我正在使用Intellij和SceneBuilder。我创建了一个MVC模型: PersonOverview和RootLayout由SceneBuilder生成。 个人概述: