Rx java RxJava1:如何转换可观测值<;列表<;可观察<;X>&燃气轮机&燃气轮机;可观察<;列表<;X>&燃气轮机;
有人能帮我找到解决我所面临问题的正确方法吗Rx java RxJava1:如何转换可观测值<;列表<;可观察<;X>&燃气轮机&燃气轮机;可观察<;列表<;X>&燃气轮机;,rx-java,rx-kotlin,Rx Java,Rx Kotlin,有人能帮我找到解决我所面临问题的正确方法吗 我有一个后端服务,它为我提供所需数据的可观察值,这些数据是事件 从事件中我可以得到一个EventGroup,它包含同一组中所有事件的ID 接下来,我可以获取属于此组的所有事件 但是,我得到了一个可观察的,我想得到一个可观察的。我如何做到这一点,而不实际订阅嵌套的可观察对象 val events : Observable<List<Observable<Event>>> = eventProvider.obse
可观察值,这些数据是事件
EventGroup
,它包含同一组中所有事件的ID事件
可观察的
,我想得到一个可观察的
。我如何做到这一点,而不实际订阅嵌套的可观察对象
val events : Observable<List<Observable<Event>>> =
eventProvider.observable
.flatMap { myBackend.getEventGroup(it.eventGroupId) }
.map {
it.eventIds.map { myBackend.getEvent(it) }
}
val事件:可观察=
可观察的
.flatMap{myBackend.getEventGroup(it.eventGroupId)}
.map{
it.eventIds.map{myBackend.getEvent(it)}
}
TL:DR
如何从
可观察的中获取可观察的?平面图两次,然后使用toList:
Observable<List<Observable<X>> source = ...
Observable<Observable<X>> step1 = source.flatMapIterable(v -> v);
Observable<X> step2 = step1.flatMap(v -> v);
Observable<List<X>> result = step2.toList();
可观察到的v);
可观察step2=step1.平面图(v->v);
可观察结果=步骤2.toList();
请注意,这要求所有参与观测的物体都是有限的。我从@akarnokd的答案中得到了启发@阿卡诺克回答说,所有的资源都是有限的,但我的资源都是无限的。然而,我也可以接受部分无限
我需要我的结果Observable
是无限的,因为每当eventProvider.Observable
发出一些东西时,我想要接收一个新的事件列表。但是,我对通过myBackend.getEvent(it)
返回的事件可以作为有限源
val events : Observable<List<Event>> =
eventProvider.observable
.flatMap { myBackend.getEventGroup(it.eventGroupId) }
.map { it.eventIds.map { myBackend.getEvent(it) } }
.map { it.toObservable().flatMap { it.first() }.toList() }
.flatMap { it }
val事件:可观察=
可观察的
.flatMap{myBackend.getEventGroup(it.eventGroupId)}
.map{it.eventIds.map{myBackend.getEvent(it)}
.map{it.toObservable().flatMap{it.first()}.toList()}
.flatMap{it}
所有的观测值都是无限的,所以我不能直接使用你的方法。然而,你的回答确实把我引向了我需要的方向,因为我可以将观测值的一部分转化为有限的一部分。谢谢:)