通过Retrofit实现API端点,返回Observable
。
Observable<Post> postObservable = sampleApi.getPost(1);
对rx的类似cache
运算符需要一些东西,但不要缓存错误。
因此,如果postObservable
的第一个订阅者收到错误,那么之后的第二个订阅者可以在onNext
请求API之后再次获得postObservable
个消费者中的Post对象。
因此,如果postObservable
的第一个订阅者在onNext
个消费者中获得Post对象,那么之后的第二个订阅者会立即在onNext
消费者中获得相同的Post对象。
答案 0 :(得分:0)
找到解决方案,但不能确定它是否正确且不那么优雅:
postObservable = Observable.wrap(
new ObservableSource<Post>() {
private Post lastResult;
@Override
public void subscribe(Observer<? super Post> observer) {
if (lastResult == null) {
sampleApi.getPost(1)
.doOnNext(post -> lastResult = post)
.subscribe(observer);
} else {
Observable.just(lastResult)
.subscribe(observer);
}
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());