RxJava:d​​oOnNext 和 doOnEach 的区别

RxJava: difference between doOnNext and doOnEach

在哪些情况下我应该使用 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);
                }
            })

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

他们确实很接近。 有一点不同(实际上在 javadoc 中可能不是很清楚,在源代码中更明显)是在 doOnEach 中,您还获得了 Notification 错误和完成事件的包装器。

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

所以一个 Action.call 来统治他们,而不是一个完全成熟的 Observer