【发布时间】:2019-10-21 19:07:28
【问题描述】:
A、B、C 是对象
所有函数调用都对房间数据库进行
这段代码 sn-p 在 ViewModel 中
repo = 存储库
所以我正在制作一个 android 应用(无法提供详细信息),对于特定屏幕,我需要执行以下操作。
我的第一个调用是repo.getInfo,它返回一个Single Observable ListOfA:Single<List<A>> //执行一些操作
对于 ListOfA 的每个元素,我需要调用另一个函数 repo.getB(A),它返回一个可观察的 ListOfB:Single<List<B>> //执行一些操作
对于 ListOfB 的每个元素,我需要调用另一个函数 repo.getC(B),它返回一个可观察的 ListOfC:Single<List<C>> //执行一些操作
获得所需数据后,我需要调用另一个函数来组合数据以在 UI 上显示。
现在我无法让它工作。这是我尝试过的。但是流程在标记为 THIS LINE 的行处停止并跳转到订阅块。 对函数的单独调用有效,因此数据不是问题。 我对此很陌生,坦率地说,我的深度不够。任何帮助或提示表示赞赏。谢谢
localListOfA = emptyList<A>()
localListOfB = emptyList<B>()
localListOfC = emptyList<C>()
compositeDisposable.add(
getInfo.map{listOfA ->
localListOfA.addAll(listofA)
listOfA.map {elementA -> ////THIS LINE
getB(elementA.id).map{listOfB ->
listOfB.filter {
//some logic to select a few objects
}
}.map { it // filtered list of B
localListofB.addAll(it)
localListOfB.last() //I only need the top element of this list
}.map{elementB ->
getC(elementB.id).map{ listOfC ->
localListOfC.addAll(listOfC)
//do some operations
}
}
}
}
.subscribeOn(DEFAULT_CACHED_SCHEDULERS)
.observeOn(AndroidSchedulers.mainThread())
.doOnError(/*take log*/)
.subscribe{
prepareUi()
}
)
【问题讨论】:
标签: android rx-java reactive-programming rx-kotlin