Rxjava2学习笔记二:RxJava2进阶使用-zip操作符

2018-01-15  本文已影响32人  橘子树上结西瓜

参考链接:
https://www.jianshu.com/p/464fa025229e
Rxjava2学习笔记一:RxJava2基本使用
https://www.jianshu.com/p/cf1dbe7654fc
Rxjava2学习笔记三:RxJava2进阶使用-map操作符
https://www.jianshu.com/p/f7efc1aeb6c9

基本使用

打印:

D/TAG: onSubscribe
D/TAG: emit A
D/TAG: emit 1
D/TAG: onNext: 1A
D/TAG: emit B
D/TAG: emit 2
D/TAG: onNext: 2B
D/TAG: emit C
D/TAG: emit 3
D/TAG: onNext: 3C
D/TAG: emit complete2
D/TAG: onComplete
注:第一根水管发送了四个数据,但是最后只接收了三个数据,zip操作符-发送的事件数量跟上游中发送事件最少的那一根水管的事件数量一致

实际应用

接口-

    public interface Api {
        @GET
        Observable<UserBaseInfoResponse> getUserBaseInfo(@Body UserBaseInfoRequest request);
    
        @GET
        Observable<UserExtraInfoResponse> getUserExtraInfo(@Body UserExtraInfoRequest request);
    
    }  

网络请求(zip打包请求)-

    Observable<UserBaseInfoResponse> observable1 =                                            
            api.getUserBaseInfo(new UserBaseInfoRequest()).subscribeOn(Schedulers.io());      
    
    Observable<UserExtraInfoResponse> observable2 =                                           
            api.getUserExtraInfo(new UserExtraInfoRequest()).subscribeOn(Schedulers.io());    
    
    Observable.zip(observable1, observable2,                                                  
            new BiFunction<UserBaseInfoResponse, UserExtraInfoResponse, UserInfo>() {         
                @Override                                                                     
                public UserInfo apply(UserBaseInfoResponse baseInfo,                          
                                      UserExtraInfoResponse extraInfo) throws Exception {     
                    return new UserInfo(baseInfo, extraInfo);                                 
                }                                                                             
            }).observeOn(AndroidSchedulers.mainThread())                                      
            .subscribe(new Consumer<UserInfo>() {                                             
                @Override                                                                     
                public void accept(UserInfo userInfo) throws Exception {                      
                    //do something;                                                           
                }                                                                             
            });

小知识-电脑生成GIF图

软件:GifCam

上一篇下一篇

猜你喜欢

热点阅读