【发布时间】:2018-11-15 10:46:33
【问题描述】:
我想将列表中的每个对象都转换为另一个对象。但这样做我的代码卡在将它们转换回列表
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) }
}
在映射之前一切都很好。但调试器甚至不会停在 toList 或 toList 下面的任何其他位置。我该如何解决这个问题?
【问题讨论】:
-
什么是getAllElements
-
你为什么不直接
.map {}getAllElements 返回的列表呢?你不需要平面地图 -
也许我可以在这里,但在另一种方法中,我需要使用列表中的每个对象并与它们一起发送单独的请求。在那种情况下,我将需要 flatMap,所以我试图了解为什么 toList() 函数永远不会被执行
-
toList 未执行,因为您的平面图未传播 onComplete 事件,而 toList 正在等待该事件。阅读此github.com/ReactiveX/RxJava/issues/3861
-
对不起,我提供了错误的信息。 getAllElements 返回 Flowable
- >
标签: android kotlin rx-java rx-java2