稍后在其树中获取 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);
}
});
});
给定一个热点 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);
}
});
});