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

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

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






你可能感兴趣的:(Retrofit +Rxjava 操作符之多个请求合并为一个请求)