Rxjava解决android的请求接口的回调地狱

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38704338/article/details/80839606
    Consumer consumer1 = new Consumer<HttpResult<List<User>>>() {
        @Override
        public void accept(HttpResult<List<User>> listHttpResult) throws Exception {
            Log.i("wangpanapan","----------------");
        }
    };
    Consumer comsumer2 = new Consumer<HttpResult<User>>() {
        @Override
        public void accept(HttpResult<User> userHttpResult) throws Exception {
            Log.i("wangpanapan","----------");
        }
    };
    /**
     * Schedulers.io() 代表io操作的线程, 通常用于网络,读写文件等io密集型的操作;
     Schedulers.computation() 代表CPU计算密集型的操作, 例如需要大量计算的操作;
     Schedulers.newThread() 代表一个常规的新线程;
     AndroidSchedulers.mainThread() 代表Android的主线程
     */
    public void loopRequest() {
        //定义被观察者
        Observable observable1 = RetrofitUtil.getNetApi().getGirls2()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread());
        //定义被观察者
        final Observable observable2 = RetrofitUtil.getNetApi().addGirl("ACup",19)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread());

        observable1.doOnNext(consumer1).observeOn(Schedulers.io())
                .flatMap(new Function<HttpResult<List<User>>,ObservableSource<HttpResult<User>>>() {
                    @Override
                    public ObservableSource<HttpResult<User>> apply(HttpResult<List<User>> listHttpResult) throws Exception {
                        return observable2;
                    }
                }).observeOn(AndroidSchedulers.mainThread()).subscribe(comsumer2, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {
                        Log.i("wangpanapan","----------");
                    }
                });

猜你喜欢

转载自blog.csdn.net/weixin_38704338/article/details/80839606