RxAndroid:创建一个基于响应发出请求和 returns success/error 的可观察对象

RxAndroid: Create an observable which make a request and returns success/error based on response

我想根据以下场景创建一个 Observable:

  1. 向服务器发出请求
  2. 随后将响应添加到缓存中。
  3. 如果添加到缓存成功,则成功响应才会发送给观察者。

谢谢。

首先,您可以使用以下逻辑编写您的方法'saveToCache':

if (success) return response;
else return new EmptyResponse();

那么你的 RxJava 代码可以像这样

Observable.fromCallable(yourNetworkCall())
.map(response -> saveToCache(response))
.filter(result -> !result.isEmpty())
.subscribe(yourObserver)

你可以这样工作 -

makeServerRequest()
.subscribeOn(Schedulers.io())
.map(someResponse -> {
     if(saveTocache()) {
         return someResponse;
     } else {
         throw new RuntimeException("Error while saving to cache");
     }
})
.observeOn(AndroidSchedulers.io())
.subscribeWith(new Observer<SomeResponse> (){
    public void onError(Throwable error) {
        // here you will receive the runtime exception you throw.
    }
    :
    :
    :
});