【问题标题】:RxJava - Returning specific Observable according to conditionRxJava - 根据条件返回特定的 Observable
【发布时间】:2016-07-27 09:56:02
【问题描述】:

我是 RxJava 的新手。我目前正在修改现有的同步流程,并使用现有方法返回的 observables 进行异步操作。

在其中一个流程中,我进行远程调用以接收来自数据库的项目。因为对数据库的调用是异步的,所以我返回了一个 observable。但是,该项目可能不存在于数据库中,在这种情况下,该值将为 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' ????
        }
    });

}

【问题讨论】:

    标签: asynchronous rx-java


    【解决方案1】:

    您可以使用Observable.flatmap(func),其中 func 是返回另一个 Observable 的函数:

    resultFromDb.flatMap((result) -> {
        if(result == null){
            return getSearchResultFromSomewhereElse(key);
        } else {
          return Observable.just(result)
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      相关资源
      最近更新 更多