RxJava:d​​oOnNext和doOnEach之间的区别

时间:2015-02-25 15:47:34

标签: java rx-java

在哪些情况下我应该使用doOnNext,在哪些情况下 doOnEach?

 .doOnEach(new Action1<Notification<? super MessageProfile>>() {
                @Override
                public void call(Notification<? super MessageProfile> notification) {

                }
            })
 .doOnNext(new Action1<MessageProfile>() {
                @Override
                public void call(MessageProfile profile) {
                    messageProfileDao.save(profile);
                }
            })

这看起来两个运算符具有相同的效果。

1 个答案:

答案 0 :(得分:46)

他们确实非常接近。 有一点不同(实际上在javadoc中可能没有那么明确,在源代码中更明显)是在doOnEach中,你还会获得错误和完成事件的Notification包装器。

然后,您可以检查isOnNextisOnCompletedisOnError,以检查您收到通知的实际事件类型。

一个Action.call来统治所有人,而不是完全成熟的Observer