嵌套方法调用具有Observable返回值

时间:2016-08-14 20:39:23

标签: rx-java

我正在尝试使用RxJava实现的工作流程,因为我对它很新,我很难理解如何实现它。 这就是我想要实现的目标:

    Observable<String> methodA(String input){
       retValue = methodB(input);
       if(something){
         return retValue;
       } else{
         return methodC(input);
       }       
    }

    Observable<String> methodB(String input);
    Observable<String> methodC(String input);

我正在尝试使用map(),但实际上我找不到真正有用的方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用.flatMap()(如果您的条件取决于方法B的结果):

   retValue = methodB(input)
   .flatMap(item -> {
     if(something){
       return just(item);
     } else{
       return methodC(item);
     }
   })

答案 1 :(得分:1)

或者你可以使用组合 filter / switchIfEmpty 如果你想避免旧时尚如果

  retValue = methodB(input)
            .filter(something)
            .switchIfEmpty(methodC(item))