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

来源:互联网 发布:中国国籍知乎 编辑:程序博客网 时间:2024/05/18 12:37

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的简单实用啦

原创粉丝点击