0

Observable<String> myObservable给定一个以不规则间隔发出值的热点。我希望能够根据我想要flatMap的结果获得初始值。例如,考虑下面的代码:obs1 Observableobs1flatMapobs2myObservable

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但我也无法实现这一点,所以我正在寻找一个更优雅的解决方案。谢谢你。

4

1 回答 1

1

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

    myObservable.flatMap(stringResult -> {
                return myObject.getObs1(stringResult).flatMap(result -> {
                    if (result) {
                        myObject.getObs2(stringResult);
                    } else {
                        Observable.just(result);
                    }
                });
            });
于 2016-05-03T18:58:52.933 回答