Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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 按顺序执行观察值_Rx Java_Rx Android - Fatal编程技术网

Rx java 按顺序执行观察值

Rx java 按顺序执行观察值,rx-java,rx-android,Rx Java,Rx Android,我正在尝试在android应用程序中实现rxJava,我正试图对此进行思考。以下是我试图满足的场景: 调用web服务以获取程序详细信息 使用第一个web服务中的数据调用下一个web服务,以确定其直播状态(无、转码、完成等) 将响应合并并转换为一个对象,该对象将被发送回ui进行显示 理想情况下,如果步骤2中的调用包含一个响应,并且该响应尚未完成,则可以继续运行,直到该作业在后端完成为止。但我在这里采取了初步措施,并将在下一步解决这一问题 更新:2015-10-21 这就是我目前所处的位置。我可能会

我正在尝试在android应用程序中实现rxJava,我正试图对此进行思考。以下是我试图满足的场景:

  • 调用web服务以获取程序详细信息
  • 使用第一个web服务中的数据调用下一个web服务,以确定其直播状态(无、转码、完成等)
  • 将响应合并并转换为一个对象,该对象将被发送回ui进行显示
  • 理想情况下,如果步骤2中的调用包含一个响应,并且该响应尚未完成,则可以继续运行,直到该作业在后端完成为止。但我在这里采取了初步措施,并将在下一步解决这一问题

    更新:2015-10-21 这就是我目前所处的位置。我可能会被清理干净

    public Observable<Program> recordedProgram( int chanId, DateTime startTime ) {
    
      final DvrDataStore dvrDataStore = this.dvrDataStoreFactory.create( chanId, startTime );
      final ContentDataStore contentDataStore = this.contentDataStoreFactory.createMasterBackendDataStore();
    
      Observable<ProgramEntity> programEntity = dvrDataStore.recordedProgramEntityDetails( chanId, startTime );
      Observable<List<LiveStreamInfoEntity>> liveStreamInfoEntity = programEntity
            .flatMap(recordedProgramEntity -> contentDataStore.liveStreamInfoEntityList(recordedProgramEntity.getFileName()));
    
      Observable<ProgramEntity> recordedProgramEntity = Observable.zip(programEntity, liveStreamInfoEntity, new Func2<ProgramEntity, List<LiveStreamInfoEntity>, ProgramEntity>() {
    
          @Override
          public ProgramEntity call(ProgramEntity programEntity, List<LiveStreamInfoEntity> liveStreamInfoEntityList) {
    
              if (null != liveStreamInfoEntityList && !liveStreamInfoEntityList.isEmpty()) {
                  programEntity.setLiveStreamInfoEntity(liveStreamInfoEntityList.get( 0 ) );
              }
    
              return programEntity;
          }
    
      });
    
      return recordedProgramEntity.map(recordedProgram -> 
    
      this.programEntityDataMapper.transform(recordedProgram));
    }
    
    公共可观察记录程序(int chanId,DateTime startTime){
    final-DvrDataStore-DvrDataStore=this.dvrDataStoreFactory.create(chanId,startTime);
    final ContentDataStore ContentDataStore=this.contentDataStoreFactory.createMasterBackendDataStore();
    Observable programEntity=dvrDataStore.recordedProgramEntityDetails(chanId,startTime);
    可观察的liveStreamInfoEntity=programEntity
    .flatMap(recordedProgramEntity->contentDataStore.liveStreamInfoEntityList(recordedProgramEntity.getFileName());
    Observable recordedProgramEntity=Observable.zip(programEntity,liveStreamInfoEntity,new Func2(){
    @凌驾
    公共ProgramEntity调用(ProgramEntity ProgramEntity,List liveStreamInfoEntityList){
    if(null!=liveStreamInfoEntityList&!liveStreamInfoEntityList.isEmpty()){
    setLiveStreamInfoEntity(liveStreamInfoEntityList.get(0));
    }
    返回程序实体;
    }
    });
    返回recordedProgramEntity.map(recordedProgram->
    这个.programEntityDataMapper.transform(recordedProgram));
    }
    
  • .firstObservable.flatmap(…)//将有权访问第一个结果
  • .filter(…)//将筛选出不符合您条件的项)
  • .map(…)//将有权访问第二个结果)
  • .subscribe()
  • .firstObservable.flatmap(…)//将有权访问第一个结果
  • .filter(…)//将筛选出不符合您条件的项)
  • .map(…)//将有权访问第二个结果)
  • .subscribe()

  • 不确定编辑格式的原因。这是一个单一的代码链,不是一系列的步骤。谢谢@MikeN,看起来这可能会奏效。一个问题,secondObservable发出一种不同的类型,我真正需要的是将它添加到firstObservable的属性中。这可能吗?flatmap函数获取第一个可观察的结果作为输入,您可以将该结果传递给第二个可观察的getter,然后传播到该可观察的结果。我更新了原始票证,说明了我目前的位置。不确定编辑格式的原因。这是一个单一的代码链,不是一系列的步骤。谢谢@MikeN,看起来这可能会奏效。一个问题,secondObservable发出一种不同的类型,我真正需要的是将它添加到firstObservable的属性中。这是可能的吗?flatmap函数获取第一个可观察到的结果作为输入,您可以将该结果传递给第二个可观察到的getter,然后传播到该可观察到的结果。我更新了原始记录单,说明了我目前的位置。