web-dev-qa-db-fra.com

RxJava: différence entre doOnNext et doOnEach

Dans quels cas devrais-je utiliser doOnNext et dans quels cas 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);
                }
            })

Il semble que les deux opérateurs aient le même effet.

39
VasyaFromRussia

Ils sont en effet assez proches. Une chose qui diffère (et ce n'est peut-être pas si clair dans le javadoc en fait, plus visible dans le code source) est que dans doOnEach, vous obtenez également des wrappers Notification pour les erreurs et l'événement de fin.

Vous pouvez ensuite vérifier isOnNext, isOnCompleted ou isOnError pour vérifier le type réel d'événement pour lequel vous avez reçu une notification.

Donc un Action.call pour les gouverner tous, au lieu d'un véritable Observer

48
Simon Baslé