Retrofit +Rxjava 操作符之多个请求合并为一个请求

App的首页一般都比较复杂,好多公司传递数据都是3-4个接口将数据传递回来,这是我们可能就需要使用的多个请求合并成一个请求。最后再去更UI 。在这里就需要用到Rxjava的操作符merge
具体如下:

  showLoading();
  Observable<TimerBean> time = RetrofitClient.getHomeApi().getTime("getServerTime");
  Observable<GoodsDetailBean> goodsDetail = RetrofitClient.getHomeApi().getGoodsDetail( products_id);
  Observable.merge(time,goodsDetail)    // 这里将 要请求的接口信息 放进来  可以放多个
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())    //observeOn 使其在UI线程
                .subscribe(new Subscriber<Object>() {
                    @Override
                    public void onCompleted() {
                        dismissLoading();
                    }

                    @Override
                    public void onError(Throwable e) {
                        dismissLoading();

                    }

                    @Override
                    public void onNext(Object obj) {
                        if (obj instanceof  TimerBean){
                             TimerBean time = (TimerBean)obj;
                        // 获取到一个请求的数据
                   }else if (obj instanceof GoodsDetailBean){
                            GoodsDetailBean goodsDetailBean = (GoodsDetailBean)obj;
                            // 获取到第二个请求的数据
                        }
                    }

              // 最后更新UI
                });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、什么是 EL 语言。 表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语音。 ...
    Xmaxdev阅读 209评论 0 0
  • 今年姥姥给我们送了一只小羊,我抱着这洁白的小羊,真像一个布娃娃。 我把它放在奶奶家院子里,它跑来跑...
    六二班郭嘉伟阅读 421评论 0 1