www.yzc261.comrxjava 条件判断

( www.yzc261.com )

我想实现这样一个功能,用户点击获取数据库数据,若数据库有这个数据,则直接显示本地的,若数据库没有这个数据,就从服务器请求再显示出来。
请问一下用rxjava要怎么写呢?

1.先把功能函数写出来.

  private static Object loadFromCacheString key {
      //....本地缓存加载,如果加载失败返回 null
  }
  private static Object loadFromServerString key {
      //....通过网络加载,返回数据
      Object obj = ....
      saveToCachekey, obj;//保存到本地缓存
      return obj;
  }

2.将阻塞方法转为RxJava的写法

    private static Observable<Object> rxLoadFromCacheString key {
        return Observable.fromCallable -> loadFromCachekey;
    }

    private static Observable<Object> rxLoadFromServerString key {
        return Observable.fromCallable -> loadFromServerkey;
    }

3.合并到一起

    public static Observable<Object> rxLoadString key {
        return Observable.concat
                rxLoadFromCachekey,
                rxLoadFromServerkey
        .filterobj -> obj != null
         .take1;
    }

4.调用最后的方法

    rxLoadkey
          .subscribeOnSchedulers.io
          .subscribeobj->{
                    System.out.printlnobj;
    };

Observable.concatObservable.justnull, Observable.just1
                .filterinteger -> integer != null
                .take1
                .subscribeinteger -> {
                    //TODO
                };

Observable.if
   -> {
    return hasCache;
  },
  Observable.justcache,
  Observable.justdatabase,
;

(看完/读完)这篇文章有何感想! www.yzc261.com的分享…

发表评论

电子邮件地址不会被公开。 必填项已用*标注