Rxjava flatmap操作符,登录-获取用户信息一步到位

2017-03-18  本文已影响0人  Zocki
工程需要依赖的包
compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
compile 'io.reactivex:rxjava:1.2.7'
compile 'io.reactivex:rxandroid:1.2.1'
代码
private class LoginInfo {
    private String token;
}

private class UserInfo {
    private String userInfoJson;
}


Observable.just(1).flatMap(new Func1<Integer, Observable<LoginInfo>>() {
      @Override
      public Observable<LoginInfo> call(Integer integer) {
           // 从网络获取数据
           LoginInfo loginInfo = new LoginInfo();
           return Observable.just(loginInfo);
       }
   }).flatMap(new Func1<LoginInfo, Observable<UserInfo>>() {
       @Override
       public Observable<UserInfo> call(LoginInfo loginInfo) {
           // 从网络获取用户信息,带入token 啥的。。
           UserInfo userInfo = new UserInfo();
           return Observable.just(userInfo);
       }
   }).observeOn(AndroidSchedulers.mainThread()) // 线程切换
           .subscribeOn(Schedulers.io())
           .subscribe(new Subscriber<UserInfo>() {
       @Override
       public void onCompleted() {
       }

       @Override
       public void onError(Throwable e) {
       }
       @Override
       public void onNext(UserInfo o) {
           // 从网络获取到用户数据,本地保存,然后 do something
       }
   });
上一篇 下一篇

猜你喜欢

热点阅读