RxAndroid:创建一个可观察对象,该对象发出请求并根据响应返回成功/错误

时间:2018-07-04 03:22:36

标签: rx-java2 rx-android

我想基于以下情况创建一个Observable:

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

谢谢。

2 个答案:

答案 0 :(得分:0)

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

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

然后您的RxJava代码可以像

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

答案 1 :(得分:0)

您可以通过这种方式使其工作-

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