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

Getting the initial emission of an Observable later in its tree

给定一个热点 Observable<String> myObservable,它以不规则的间隔发出值。 我希望能够 flatMap 一个 obs1 Observable 并取决于结果 obs1 我想 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 存储在一个变量中,并在 second flatMap 但我也没能做到这一点,所以我正在寻找更优雅的解决方案。 谢谢。

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

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