RxJava - 根据条件返回特定的可观察条件

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) 
});