0

RxJava: отличие между doOnNext и doOnEach

1

Описание проблемы

В каких случаях следует использовать doOnNext, а в каких — doOnEach?

Я столкнулся с данным вопросом при работе с библиотекой RxJava. Изучая две операции 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

Они действительно довольно близки.

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

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

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь