给定热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
但我无法实现这一目标,所以我正在寻找更优雅的解决方案。
谢谢。
答案 0 :(得分:1)
您可以将第二个flatMap
放入第一个flatMap
的函数中,如下所示:
myObservable.flatMap(stringResult -> {
return myObject.getObs1(stringResult).flatMap(result -> {
if (result) {
myObject.getObs2(stringResult);
} else {
Observable.just(result);
}
});
});