gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 23:25:23 36 4
gpt4 key购买 nike

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

最佳答案

您正在寻找 flatMapCompletable 而不是 map,因为 map 只是拦截流并将发射映射到另一种类型,而 ' flatMap'(或它的 sibling ),来自文档:

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

你可以在Here中看到它的弹珠图

关于android - RxJava/Kotlin Observable 方法调用链 - 如何终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53684317/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com