RxJava2学习之六:登录后再获取用户信息

登录后再获取用户信息使用 FlatMap操作符,将用户请求参数转换为返回响应结果,再将响应结果转换为用户信息。

FlatMap 操作符

FlatMap 将一个发射数据的Observable变换为多个Observables,然后将它们发射的数据合并后放进一个单独的Observable。

FlatMap 操作符使用一个指定的函数对原始Observable发射的每一项数据执行变换操作,这个函数返回一个本身也发射数据的Observable,然后 FlatMap 合并这些Observables发射的数据,最后将合并后的结果当做它自己的数据序列发射。

例如,当你有一个这样的Observable:它发射一个数据序列,这些数据本身包含Observable成员或者可以变换为Observable,因此你可以创建一个新的Observable发射这些次级Observable发射的数据的完整集合。

注意:FlatMap 对这些Observables发射的数据做的是合并( merge )操作,因此它们可能是交错的。

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(SERVER_ADDRESS)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
api = retrofit.create(Api.class);

UserParam param = new UserParam("appblog.cc", "123456");

Observable.just(param).flatMap(new Function<UserParam, ObservableSource<ResponseResult>>() {
    @Override
    public ObservableSource<ResponseResult> apply(UserParam userParam) throws Exception {
        ResponseResult result = api.login(userParam).execute().body();
        return Observable.just(result);
        //需要添加Retrofit适配器adapter-rxjava和addCallAdapterFactory(RxJavaCallAdapterFactory.create())
        //return api.loginWithRx(userParam);
    }
}).flatMap(new Function<ResponseResult, ObservableSource<User>>() {
    @Override
    public ObservableSource<User> apply(ResponseResult responseResult) throws Exception {
        User user = api.getUserInfoWithPath(responseResult.getUserId()).execute().body();
        return Observable.just(user);
    }
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<User>() {
    @Override
    public void accept(User user) throws Exception {
        Toast.makeText(MainActivity.this, user.getUsername(), Toast.LENGTH_SHORT).show();
    }
});

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/rxjava2-learning-6-obtain-user-information-after-login/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
RxJava2学习之六:登录后再获取用户信息
登录后再获取用户信息使用 FlatMap操作符,将用户请求参数转换为返回响应结果,再将响应结果转换为用户信息。 FlatMap 操作符 FlatMap 将一个发射数据的Obser……
<<上一篇
下一篇>>
文章目录
关闭
目 录