结合从 SharedPrefs 获取价值和网络与 RxJava

Combining getting value from SharedPrefs and network with RxJava

将这些操作与 RxJava 结合起来的最佳方式是什么:

  1. 从共享首选项获取授权令牌
  2. 如果不存在或无效,从服务器获取。
  3. 使用有效请求执行请求。

假设您有两个可观察对象,一个来自共享首选项 returns AuthToken,另一个来自服务器 returns AuthToken

Observable<AuthToken> authTokenFromPrefs = ...;
Observable<AuthToken> authTokenFromServer = ...;

然后从以上两个构造一个可观察对象,它使用 AuthToken 和 returns 服务调用的结果:

Observable<T> results = 
  authTokenFromPrefs
    .filter(AuthToken::isValid)
    .switchIfEmpty(authTokenFromServer)
    .flatMap(authToken -> callService(authToken));