rxjava学习笔记(二)

关于合并被观察者

问题描述:两个被观察者同时执行两个请求网络操作,其中一个在执行过程中发生异常,此时并不希望中断另一个的执行,而是让它执行完。

可以利用操作符mergeDelayError

但是还有一点需要注意:
observeOn(AndroidSchedulers.mainThread(),true)
这儿必须执行两个参数的重载方法,而且必须传true
github上有关于这个的描述 参考
代码演示:

Observable obs1=Observable.create(new Observable.OnSubscribe<String>(){

            @Override
            public void call(Subscriber<? super String> subscriber) {
                try {
                    Thread.sleep(500);
                    subscriber.onNext(" aaa");
                    subscriber.onCompleted();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).subscribeOn(Schedulers.newThread());

        Observable obs2=Observable.create(new Observable.OnSubscribe<String>(){

            @Override
            public void call(Subscriber<? super String> subscriber) {
                try {
                    Thread.sleep(1500);
                    subscriber.onNext("bbb");
                    subscriber.onCompleted();
                } catch (InterruptedException e) {
                    e.printStackTrace();

                }
            }
        }).subscribeOn(Schedulers.newThread());


        Observable.mergeDelayError(obs1,obs2)
                .observeOn(AndroidSchedulers.mainThread(),true)
                .subscribe(new Subscriber<String>() {
                    StringBuffer sb=new StringBuffer();
                    @Override
                    public void onCompleted() {
                        mText.append("两个任务都处理完毕!!\n");
                        mText.append("更新数据:"+sb+"\n");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.e("abc",e.toString());

                    }

                    @Override
                    public void onNext(String s) {
                        sb.append( s+",");
                        mText.append("得到一个数据:"+s+"\n");
                    }
                });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容