稍后在树中获得Observable的初始发射

时间:2016-05-03 17:30:04

标签: rx-java reactive-programming rx-android reactivex

给定热Observable<String> myObservable以不规则的间隔发出值。 我希望能flatMap obs1 Observable,具体取决于结果 obs1的{​​{1}}我希望flatMap obs2的初始myObservable值。 作为示例,请考虑以下代码:

myObservable
   .flatMap(stringResult -> myObject.getObs1(stringResult))
   .flatMap(result -> {
              if (result) {
                    myObject.getObs2(stringResult); // Here I would like to get stringResult emitted by myObservable but I can't
              } else {
                    Observable.just(result); // We continue with the "same" initial Observable 
              }
   });

解决方案是将myObservable存储在变量中并获取其中的最新值 第二个flatMap但我无法实现这一目标,所以我正在寻找更优雅的解决方案。 谢谢。

1 个答案:

答案 0 :(得分:1)

您可以将第二个flatMap放入第一个flatMap的函数中,如下所示:

    myObservable.flatMap(stringResult -> {
                return myObject.getObs1(stringResult).flatMap(result -> {
                    if (result) {
                        myObject.getObs2(stringResult);
                    } else {
                        Observable.just(result);
                    }
                });
            });