Подтвердить что ты не робот

RxJava: разница между doOnNext и 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);
                }
            })

Похоже, что оба оператора имеют одинаковый эффект.

4b9b3361

Ответ 1

Они действительно очень близки. Одна вещь, которая отличается (и может быть, не так ясно в javadoc на самом деле, более видимой в исходном коде) заключается в том, что в doOnEach вы также получаете обертки Notification для ошибок и события завершения.

Затем вы можете проверить isOnNext, isOnCompleted или isOnError, чтобы проверить фактический вид события, на которое вы получили уведомление.

Итак, один Action.call, чтобы управлять ими всеми, вместо полноценного Observer