【发布时间】:2019-05-11 20:03:44
【问题描述】:
父母有孩子。孩子们有测试ID。每个测试 ID 对应一个测试分数。我希望每个孩子都有一份他们的考试成绩清单。
getParentObservable():Observable<Parent>
getChildrenSingle(val parentId: Int): Single<List<Child>>
子项包含我要填写的List<Int> testIds 和一个List<Score> 分数
getScoresSingle(val testId: Int): Single<Score>
我尝试了以下方法,结果出乎意料:
// children is a class level var List<Child>
var childIndex = 0
getParentObservable()
.flatMap { parent -> getChildrenSingle(parent.Id) }
.flatMapObservable { kids ->
children = kids
Observable.fromIterable(kids)
}
.flatMap { kid -> Observable.fromIterable(kid.testIds) }
.flatMapSingle { testId -> getScoresSingle(testId) }
.toList()
.compose(IoMainThreadScheduler)
.subscribe { currentKidsScores ->
children[childIndex].scores = currentKidsScores
childIndex = childIndex + 1
}
下面是它的外观示意图:
Parent1
-->Child 1
-->TestId1
-->TestScore1
-->Child2
-->TestId1
-->TestScore1
-->TestId2
-->TestScore2
Parent2
-->Child 1
-->TestId1
-->TestScore1
我希望 onSuccess 被调用 3 次,每个孩子 1 次。在 onSuccess 中,应该为孩子分配他或她的分数。
【问题讨论】:
标签: android kotlin rx-java rx-java2