Rx java RxJava:在某些条件下从内部执行另一个observate第一个observate

Rx java RxJava:在某些条件下从内部执行另一个observate第一个observate,rx-java,rx-java2,rx-android,Rx Java,Rx Java2,Rx Android,我有以下几点 Observable<DATA> = getDataFromA(); Observable<DATA> = getDataFromB(); Observable<DATA> = getData(); public void getData() { /* Here I would like to have the following in a single stream: 1. return getDataFromA(); 2. afte

我有以下几点

Observable<DATA> = getDataFromA();
Observable<DATA> = getDataFromB();

Observable<DATA> = getData();

public void getData() {
/*
   Here I would like to have the following in a single stream:
1. return getDataFromA();
2. after data from A is fetched: if (ConditionForB) then execute getDataFromB() observable. 
I would like to execute it separate but not merge with the stream from getDataFromA() because, this data is not to be provided back to the consumer. It is only to be executed and data stored somewhere. 
*/
}
Observable=getDataFromA();
可观察=getDataFromB();
可观察=getData();
public void getData(){
/*
在这里,我希望在单个流中包含以下内容:
1.返回getDataFromA();
2.从A获取数据后:如果(ConditionForB),则执行getDataFromB()observable。
我希望单独执行它,但不与getDataFromA()中的流合并,因为此数据不会提供给使用者。它只是执行并将数据存储在某个地方。
*/
}
Observable.concat()
Observable.merge()
将加入流,因此订阅者将接收来自
getDataFromB()
的结果。 是否有一种方法可以在
getDataFromA()
之后执行
getDataFromB()observable
,但不向订阅者提供直接结果

谢谢

您可以使用来实现该逻辑

getDataFromA()
    .flatMap(dataFromA -> {
        if (ConditionForB) {
            return getDataFromB()
                .map(dataFromB -> {
                     // TODO handle dataFromB
                     return dataFromA; // or merged result of dataFromA and dataFromB
                });
        } else {
            return Observable.just(dataFromA);
        }
    })