RxJava/Kotlin可观察方法调用链-如何终止



我想实现一个方法来编辑一个注释,将其保存到本地数据库(缓存(,然后将其作为POST请求发送到服务器。我正在学习RxJava,我想从注释中创建Observable,然后对其应用转换,比如将其映射到实体模型并保存。问题是我的方法返回Completable,而这个链返回Observable<Completable>。如何从我用来启动RxJava的Observable中打开Completable。每个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) }
}
}

您正在寻找flatMapCompletable而不是map,因为map只是截取流并将排放映射到另一种类型,而"flatMap"(或其兄弟(来自文档:

将Observable发射的项目转换为Observable,然后将这些项目的发射压平为单个Observable。

你可以在这里中看到它的大理石图

最新更新