RxJava/Kotlin Observable 方法调用链 - 如何终止?

RxJava/Kotlin Observable method call chain - how to terminate?

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

============================================= ==========

更新

最后,我找到了 "a solution",但我不确定它是否正确:-)

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'(或者它是兄弟姐妹),来自文档:

Transform the items emitted by an Observable into Observables, then flatten the emissions from those into a single Observable.

你可以在Here

中看到它的弹珠图