我正在使用 RxJava 2.*,我想通过使用 zip 运算符合并两个可观察的结果(一个来自改造,另一个来自房间)(请随意提出更好的建议)。
来自远程服务器的模型对象与来自房间数据库的模型对象不同。
- 我想将远程对象映射到本地对象
- 合并这两个结果
- 显示结果。
我的远程 API 如下所示:
interface CategoryService{
@GET("categories")
fun getCategories(): Observable<List<Category>>
}
我的 Room DAO 查询如下所示:
@Query("SELECT * FROM categories ORDER BY id")
abstract fun categories(): Observable<List<KmagCategory>>
我已将 Observable> 转换为 Observable> ,如下所示:
val newCategoryList : Observable<List<KmagCategory>> =settingService.getCategories().flatMap { list ->
Observable.fromIterable(list)
.map { item -> KmagCategory(item.id, item.title, item.slug, item.isFav) }
.toList()
.toObservable()
}
但是当我尝试像这样压缩这两个 observable 时:
val combinedObservable : Observable<List<KmagCategory>> = Observables.zip(KMagApp.database?.categories()?.categories()!!,newSetting)