【发布时间】:2019-02-10 21:27:05
【问题描述】:
我是 Rx 世界的新手,所以请多多包涵。
我的代码在 Kotlin 中,但 Java 代码也会有所帮助。
我有两种方法,其中一种是从数据库中加载任务,如果有任务,我想将它们发送到服务器。
fun getListFromDb(): Single<List<TaskEntity>> {
return taskEntityDao.getAll()
}
fun syncTasks(localTasks: TaskSyncRequest): Observable<ApiResponse<List<TaskEntity>>> {
return taskServices.syncTasks(localTasks)
}
我知道我可以使用 flatmap 来链接 observables,但无法让它在 Single 和 Observables 之间工作。
【问题讨论】:
-
您正在寻找 flatMapObservable 运算符。另外,如果这是一个 HTTP 网络调用,为什么它会返回一个 Observable?,如果它确实返回一个 Single 会更清楚地说明意图。
-
Single表示单个项目,Observable- 项目序列。似乎您的 api 应该返回“单个”。无论如何,您可以轻松地将 observable 转换为 single,例如使用singleOrError()方法 -
是的,这实际上是一个改造电话,而且他们所涵盖的几乎所有示例都使用 observables 而不是 single,如果我将它们更改为 single 会更好吗?如果是这样,这将解决我现在的问题
标签: rx-java rx-java2 flatmap rx-kotlin rx-kotlin2