我想实现一种方法来编辑便笺,将其保存到本地数据库(缓存),然后将其作为POST请求发送到服务器。我正在学习RxJava,我想从注释中创建Observable
,然后对其进行转换,例如将其映射到Entity模型并保存。我的方法返回Completable且此链返回Observable<Completable>
的问题。如何从Completable
中解开Observable
,我只是用来启动RxJava的东西。每个editNote()
方法都返回一个Completable
。
override fun editNote(note: Note): Completable {
return Observable.just(note)
.map { mapper.mapToEntity(it) }
.map { noteEntity ->
factory.getCacheDataStore().editNote(noteEntity)
.andThen { factory.getRemoteDataStore().editNote(noteEntity) }
}
}
================================================ ========
最后,我设法找到了“解决方案”,但我不确定它是否正确:-)
override fun editNote(note: Note): Completable {
return Observable.just(note)
.map { mapper.mapToEntity(it) }
.flatMapCompletable { noteEntity ->
factory.getCacheDataStore().editNote(noteEntity)
.andThen { factory.getRemoteDataStore().editNote(noteEntity) }
}
}
答案 0 :(得分:1)
您正在寻找flatMapCompletable
而不是map
,因为map
只是拦截流并将发射映射为另一种类型,而'flatMap'(或其同级)则来自文档:
将一个Observable发出的项目转换为Observable,然后将这些项目的排放展平为一个Observable。
您可以在Here上看到它的大理石图