我有一个工作的改进api,它返回一些数据的可观察对象。
Api使用认证令牌访问服务器。当授权令牌过期时,我有关于它的错误消息(观察者在订阅者中调用onError)。public Observable<MyObject> getObjectObservable() {
return mApi.getObject();
}
我也可以用observable刷新token:
private Observable<AuthResult> restoreToken() {
return mApi.restoreToken(new RestoreTokenBody(getRestoreToken()));
}
如何在getObjectObservable函数中实现下一步:
- 首先尝试mApi.getObject()
- 错误刷新令牌
- 刷新后再次调用mApi.getObject()
尝试使用操作符onErrorResumeNext
如下:
public Observable<MyObject> getObjectObservable() {
return mApi.getObject()
.onErrorResumeNext(restoreToken().flatMap(authResult -> mApi.getObject()));
}