apiService.A()
// store in DB here? How? maybe use map()?
.flatMap(modelA -> {
// or maybe store modelA in DB here?
return apiService.B().map(modelB -> {
storeInDB()l // store B here ?
return modelB;
});
});
如果我没有使用lambda函数,这看起来就像普通的嵌套调用一样难看。这样做更好吗?
我不认为使用map
运算符是存储api调用结果的最佳方法。
我喜欢做的是在doonnext
运算符中分离这些内容。因此,您的示例如下所示:
apiService.A()
.doOnNext(modelA -> db.store(modelA))
.flatMap(modelA -> apiService.B())
.doOnNext(modelB -> db.store(modelB));
(您自己添加必要的observeon
和subscribeon
,就像您需要的那样)
第一个API调用返回一个元素列表,然后我想随后调用另一个API,在第一个API调用的列表的每个元素中返回一个。我(想我)已经得到了它,所以它用列表的每个元素调用第二个应用编程接口调用,但是我不确定如何订阅它来获得第二个调用返回的结果。 改装接口: 我不确定从这里去哪里。 我相信然后使我能够获得可观察的
本文向大家介绍rx-java 设置Retrofit和RxJava,包括了rx-java 设置Retrofit和RxJava的使用技巧和注意事项,需要的朋友参考一下 示例 Retrofit2带有对多种可插入执行机制的支持,其中一种是RxJava。 要与RxJava一起使用改造,首先需要将Retrofit RxJava适配器添加到您的项目中: 那么在构建改造实例时需要添加适配器: 在您定义API的界面
球门 在我的应用程序中,我希望使用改装2上传一些文件到我的网络服务器(一次多个,在这种情况下是图片。)到那个特定的文件。 尝试 我对使用函数式编程范式不熟悉,所以我的理解可能会被误导。我有两个不同的对象,一个文件响应(DTO表示从我的网络服务器上传文件后的响应)和一个照片对象。这个Photo对象有两个字段,并充当在我的后端服务器中持久化的实体。它的字段对应于列,并且单独上传这些对象可以很好地工作。
所以基本上我想做的是,打第一个网络电话。如果调用的RESTful web服务返回1,则进行第二次网络调用。如果web服务返回0,则不要进行第二次网络调用。 这是我的密码 显然,上面的代码是错误的,因为它应该总是返回可观察的。那么,如果第一次网络调用返回0,我的代码应该如何编写?
我正在尝试从使用普通改型迁移到使用RxJava扩展进行改型,以便在后台线程上进行API调用链。 例如,我有一个名为ModelGroup的对象,它有一个ModelPerson对象列表。我的目标是做到以下几点。 将ModelGroup发送到服务器并接收一个响应,它是一个整数,表示新插入的ID,我们称之为newGroupId 对于ModelGroup中的每个ModelPerson,设置Person。gr