Do

注册一个动作作为原始Observable生命周期事件的一种占位符

do

你可以注册回调,当Observable的某个事件发生时,Rx会在与Observable链关联的正常通知集合中调用它。Rx实现了多种操作符用于达到这个目的。

RxJava实现了很多Do操作符的变体。

doOnEach

doOnEach

doOnEach操作符让你可以注册一个回调,它产生的Observable每发射一项数据就会调用它一次。你可以以Action的形式传递参数给它,这个Action接受一个onNext的变体Notification作为它的唯一参数,你也可以传递一个Observable给doOnEach,这个Observable的onNext会被调用,就好像它订阅了原始的Observable一样。

doOnNext

doOnNext

doOnNext操作符类似于doOnEach(Action1),但是它的Action不是接受一个Notification参数,而是接受发射的数据项。

示例代码

  1. Observable.just(1, 2, 3)
  2. .doOnNext(new Action1<Integer>() {
  3. @Override
  4. public void call(Integer item) {
  5. if( item > 1 ) {
  6. throw new RuntimeException( "Item exceeds maximum value" );
  7. }
  8. }
  9. }).subscribe(new Subscriber<Integer>() {
  10. @Override
  11. public void onNext(Integer item) {
  12. System.out.println("Next: " + item);
  13. }
  14. @Override
  15. public void onError(Throwable error) {
  16. System.err.println("Error: " + error.getMessage());
  17. }
  18. @Override
  19. public void onCompleted() {
  20. System.out.println("Sequence complete.");
  21. }
  22. });

输出

  1. Next: 1
  2. Error: Item exceeds maximum value

doOnSubscribe

doOnSubscribe

doOnSubscribe操作符注册一个动作,当观察者订阅它生成的Observable它就会被调用。

doOnUnsubscribe

doOnUnsubscribe

doOnUnsubscribe操作符注册一个动作,当观察者取消订阅它生成的Observable它就会被调用。

doOnCompleted

doOnCompleted

doOnCompleted 操作符注册一个动作,当它产生的Observable正常终止调用onCompleted时会被调用。

doOnError

doOnError

doOnError 操作符注册一个动作,当它产生的Observable异常终止调用onError时会被调用。

doOnTerminate

doOnTerminate

doOnTerminate 操作符注册一个动作,当它产生的Observable终止之前会被调用,无论是正常还是异常终止。

finallyDo

finallyDo

finallyDo 操作符注册一个动作,当它产生的Observable终止之后会被调用,无论是正常还是异常终止。