RxAndroid:创建一个基于响应发出请求和 returns success/error 的可观察对象
RxAndroid: Create an observable which make a request and returns success/error based on response
我想根据以下场景创建一个 Observable:
- 向服务器发出请求
- 随后将响应添加到缓存中。
- 如果添加到缓存成功,则成功响应才会发送给观察者。
谢谢。
首先,您可以使用以下逻辑编写您的方法'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.
}
:
:
:
});
我想根据以下场景创建一个 Observable:
- 向服务器发出请求
- 随后将响应添加到缓存中。
- 如果添加到缓存成功,则成功响应才会发送给观察者。
谢谢。
首先,您可以使用以下逻辑编写您的方法'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.
}
:
:
:
});