RxJava - 根据条件返回特定的可观察条件
问题描述:
我是RxJava的新手。我目前正在修改现有的同步流程,并使用已有方法的返回观察值进行异步处理。RxJava - 根据条件返回特定的可观察条件
在其中一个流程中,我进行远程调用以从DB接收项目。由于对数据库的调用是异步的,因此我会返回一个可观察对象。但是,该项目可能不存在于数据库中,在这种情况下,值将为NULL。
如果值为NULL我需要去其他异步调用其他各种远程服务,并最终返回可观察的响应。
我不明白的是如何用RxJava实现这样的流程。这里是一个示例伪代码:
void searchSomethingAsych(String key) {
Observable<SearchResult> result = doTheSearch(key);
}
Observable<SearchResult> doTheSearch(String key) {
Observable<SearchResult> resultFromDb = checkIfExistsInDb(key);
// THIS IS WHERE I AM NOT SURE HOW TO DO THIS
resultFromDb.subscribe((result)- > {
if(result == null){
// .. go get this from somewhere else
Observable<SearchResult> resultFromSomewhere = getSearchResultFromSomewhereElse(key);
// how do I return the 'resultFromSomewhere' ????
}
});
}
答
您可以使用Observable.flatmap(func)
,其中func被函数返回另一个可观测:
resultFromDb.flatMap((result) -> {
if(result == null){
return getSearchResultFromSomewhereElse(key);
} else {
return Observable.just(result)
});