8. Rxjava2 : do操作符

1. RxJava2 : 什么是观察者模式
2. RxJava2 : 创建操作符(无关时间)
3. Rxjava2 : 创建操作符(有关时间)
4. Rxjava2 : 变换操作符
5. Rxjava2 : 判断操作符
6. Rxjava2 : 筛选操作符
7. Rxjava2 : 合并操作符
8. Rxjava2 : do操作符
9. Rxjava2 : error处理
10. Rxjava2 : 重试
11. Rxjava2 : 线程切换

api use
doOnSubscribe
doOnEach {{doOnEach}}
doOnNext
onNext
doAfterNext
doOnError
onError
doOnComplete
onComplete
doOnFinally

流程

Observable
->
doOnSubscribe
元素1
->
doOnEach
->
doOnNext
->
onNext(Observer)
->
doAfterNext

元素2
->
doOnEach
->
doOnNext
->
onNext(Observer)
->
doAfterNext

-> doOnEach
->{
  doOnError -> onError(Observer)
  doOnComplete -> onComplete(Observer)
}

->
doOnFinally
Observable.create(new ObservableOnSubscribe() {
            @Override
            public void subscribe(ObservableEmitter e) throws Exception {
                e.onNext(1);
                e.onNext(2);
                e.onError(new NullPointerException());
                e.onNext(3);
            }
        })
                .doOnSubscribe(new Consumer() {
                    @Override
                    public void accept(Disposable disposable) throws Exception {
                        Log.d(TAG, "doOnSubscribe");
                    }
                })
                .doOnEach(new Consumer>() {
                    @Override
                    public void accept(Notification integerNotification) throws Exception {
                        Log.d(TAG, "doOnEach");
                    }
                })
                .doOnNext(new Consumer() {
                    @Override
                    public void accept(Integer integer) throws Exception {
                        Log.d(TAG, "doOnNext");
                    }
                })
                .doAfterNext(new Consumer() {
                    @Override
                    public void accept(Integer integer) throws Exception {
                        Log.d(TAG, "doAfterNext");
                    }
                })
                .doOnError(new Consumer() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {
                        Log.d(TAG, "doOnError");
                    }
                })
                .doFinally(new Action() {
                    @Override
                    public void run() throws Exception {
                        Log.d(TAG, "doFinally");
                    }
                })
                .subscribe(new Observer() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Integer integer) {
                        Log.d(TAG, "observe : onNext : " + integer);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "observe : onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.d(TAG, "observe : onComplete");
                    }
                });

log

02-13 11:08:46.821 19940-19940/... D/SplashActivity: doOnSubscribe
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doOnEach
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doOnNext
02-13 11:08:46.821 19940-19940/... D/SplashActivity: observe : onNext : 1
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doAfterNext
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doOnEach
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doOnNext
02-13 11:08:46.821 19940-19940/... D/SplashActivity: observe : onNext : 2
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doAfterNext
02-13 11:08:46.831 19940-19940/... D/SplashActivity: doOnEach
02-13 11:08:46.831 19940-19940/... D/SplashActivity: doOnError
02-13 11:08:46.831 19940-19940/... D/SplashActivity: observe : onError
02-13 11:08:46.831 19940-19940/... D/SplashActivity: doFinally

doOnEach

  • doOnEach
    只要有元素发射,均会经历doOnEach
    元素类型:
    1.正常的元素
    2.error
    3.complete

你可能感兴趣的:(8. Rxjava2 : do操作符)