2016-08-14 47 views
1

我有一個工作流我正在嘗試使用RxJava來實現,因爲我對它很新,我很難理解如何實現它。 這就是我想要實現:帶有Observable返回值的嵌套方法調用

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()但實際上我找不到實際工作的方式。

有什麼想法?

回答

1

使用.flatMap()(如果你的條件取決於的methodB的結果):

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

或者,如果你想如果避免舊的方式您可以使用組合過濾器/ switchIfEmpty

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