rxjava2代码实战2--zip操作符

zip操作符

将两个或多个Observable合并为一个并将最后的结果返回

demo下载地址:
GitHub - GodisGod/Rxjava2Test
https://github.com/GodisGod/Rxjava2Test

代码实战:

网络请求1得到用户的ID
网络请求2得到用户的头像
ID和头像都得到之后返回给客户端

效果图:

zip

这里使用了我的一个网络访问框架:请先理解这个网络访问框架再往下看哦(^__^)

retrofit2.0+okhttp3+rxjava的封装(简单好用) - CSDN博客
http://blog.csdn.net/baidu_31093133/article/details/52278249

网络访问1代码:

        ZipServer1.getZipBean1(new Consumer<Zipbean1>() {
            @Override
            public void accept(Zipbean1 zipbean1) throws Exception {
                tvShow1.setText("网络请求1获取id:  " + zipbean1.getId());
            }
        }, new Consumer<Throwable>() {
            @Override
            public void accept(Throwable throwable) throws Exception {

            }
        }, new Action() {
            @Override
            public void run() throws Exception {

            }
        });

网络访问2代码:

        ZipServer2.getZipBean2(new Consumer<Zipbean2>() {
            @Override
            public void accept(Zipbean2 zipbean2) throws Exception {
                tvShow2.setText("网络请求2获取avatar:  " + zipbean2.getAvatar_url());
            }
        }, new Consumer<Throwable>() {
            @Override
            public void accept(Throwable throwable) throws Exception {

            }
        }, new Action() {
            @Override
            public void run() throws Exception {

            }
        });

zip使用代码

        HttpService service = HttpManager.getInstance().getHttpService();
        Observable<Zipbean1> observable1 = service.getZipBean1();//创建网络访问1的observable
        Observable<Zipbean2> observable2 = service.getZipBean2();//创建网络访问2的observable
        //使用zip合并两个创建网络访问2的observable
        //其中网络访问1返回Zipbean1
        //网络访问2返回Zipbean2
        //zip返回Zipbean
        Observable observableZip = Observable.zip(observable1, observable2, new BiFunction<Zipbean1, Zipbean2, ZipBean>() {
            @Override
            public ZipBean apply(Zipbean1 zipbean1, Zipbean2 zipbean2) throws Exception {
                ZipBean zipbean = new ZipBean();
                zipbean.setId(zipbean1.getId());
                zipbean.setAvatar(zipbean2.getAvatar_url());
                return zipbean;
            }
        });
        HttpManager.getInstance().doHttpRequest(observableZip, consumer, throwableConsumer, action);

zip的方法重载有很多:可以根据实际业务使用

zip

以上就是zip的简单实用啦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值