Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rx java RxJava1:如何转换可观测值<;列表<;可观察<;X>&燃气轮机&燃气轮机;可观察<;列表<;X>&燃气轮机;_Rx Java_Rx Kotlin - Fatal编程技术网

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}
    
    所有的
    观测值都是无限的,所以我不能直接使用你的方法。然而,你的回答确实把我引向了我需要的方向,因为我可以将
    观测值的一部分转化为有限的一部分。谢谢:)