doOnSuccess 和 doOnEach 之间的区别,以及在哪个用例中我应该使用它们中的每一个
Difference between doOnSuccess and doOnEach, and in which use case i should use each of them
我正在查看源代码文件,发现在某些提交中我们更改了
的用法
.doOnSuccess(response -> logBodyAsJSON(response ));
进入
.doOnEach(response -> logBodyAsJSON(response ));
我找不到这样做的明确理由。
那么 doOnSuccess 和 doOnEach 有什么区别,我应该在什么情况下使用它们?
顾名思义,doOnSuccess
只会在您的 observable returns 项成功时调用,并且不会引发错误。因此,您只会记录确认回复。
此外,doOnSuccess 适用于 Singles 或 Maybes,它们只能发出一个项目(否则您将使用 doOnNext)。如果您使用可以发出多个项目的 Observable,您将使用 doOnNext
来获得完全相同的行为。
doOnEach
将被调用,无论 observable 是否发出一个项目,错误与否。它接收通知而不是项目本身。它将被称为:
- 单机的 onSuccess 和 onError
- 典型 Observable 的 onNext、onComplete 和 onError
Observable 项目很可能从 Single 变为 Observable。此外,还需要能够记录错误和成功,这就是未选择 doOnNext
的原因。
我正在查看源代码文件,发现在某些提交中我们更改了
的用法 .doOnSuccess(response -> logBodyAsJSON(response ));
进入
.doOnEach(response -> logBodyAsJSON(response ));
我找不到这样做的明确理由。
那么 doOnSuccess 和 doOnEach 有什么区别,我应该在什么情况下使用它们?
doOnSuccess
只会在您的 observable returns 项成功时调用,并且不会引发错误。因此,您只会记录确认回复。
此外,doOnSuccess 适用于 Singles 或 Maybes,它们只能发出一个项目(否则您将使用 doOnNext)。如果您使用可以发出多个项目的 Observable,您将使用 doOnNext
来获得完全相同的行为。
doOnEach
将被调用,无论 observable 是否发出一个项目,错误与否。它接收通知而不是项目本身。它将被称为:
- 单机的 onSuccess 和 onError
- 典型 Observable 的 onNext、onComplete 和 onError
Observable 项目很可能从 Single 变为 Observable。此外,还需要能够记录错误和成功,这就是未选择 doOnNext
的原因。