您的位置:首页 > 编程语言 > Java开发

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

2017-12-04 23:00 316 查看

zip操作符

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

demo下载地址:

GitHub - GodisGod/Rxjava2Test

https://github.com/GodisGod/Rxjava2Test

代码实战:

网络请求1得到用户的ID

网络请求2得到用户的头像

ID和头像都得到之后返回给客户端

效果图:



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

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的简单实用啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rxjava2 zip