RxJava: выполнение другой наблюдаемой изнутри первой наблюдаемой при некотором условии - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть следующие

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.concat(), и Observable.merge() присоединятся к потокам, и, таким образом, результаты от getDataFromB() будут получены подписчиком.Есть ли способ, чтобы getDataFromB() observable выполнялся после getDataFromA(), но без предоставления прямых результатов подписчику.

Спасибо.

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете использовать Observable.flatMap() для реализации этой логики

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);
        }
    })
...