Cem*_*Cem 2 android kotlin rx-java rx-java2
我想将列表中的每个对象都转换为另一个对象。但是这样做我的代码卡在将它们转换回 List
override fun myFunction(): LiveData<MutableList<MyModel>> {
return mySdk
.getAllElements() // Returns Flowable<List<CustomObject>>
.flatMap { Flowable.fromIterable(it) }
.map {MyModel(it.name!!, it.phoneNumber!!) }
.toList() //Debugger does not enter here
.toFlowable()
.onErrorReturn { Collections.emptyList() }
.subscribeOn(Schedulers.io())
.to { LiveDataReactiveStreams.fromPublisher(it) }
}
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到映射。但调试器甚至不会停留在 toList 或 toList 之下的任何其他地方。我该如何解决这个问题?
使用flatMap()您只会将Flowableof 列表展平为单个Flowable元素。调用toList()它需要Flowable完成,因此您很可能永远不会到达那里。如果您只想映射列表中的元素并发出一个带有新列表的项目,您应该在其中进行映射,flatMap()或者尝试使用concatMap()以保持顺序:
...
.concatMapSingle { list ->
Observable.fromIterable(list).map {
MyModel(it.name!!, it.phoneNumber!!)
}.toList()
}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2851 次 |
| 最近记录: |