doOnSuccess 和 doOnEach 之间的区别,以及在哪个用例中我应该使用它们中的每一个
Posted
技术标签:
【中文标题】doOnSuccess 和 doOnEach 之间的区别,以及在哪个用例中我应该使用它们中的每一个【英文标题】:Difference between doOnSuccess and doOnEach, and in which use case i should use each of them 【发布时间】:2019-11-07 08:29:01 【问题描述】:我正在查看一个源代码文件,并在某些提交中发现我们更改了
.doOnSuccess(response -> logBodyAsJSON(response ));
进入
.doOnEach(response -> logBodyAsJSON(response ));
我找不到这样做的明确理由。
那么 doOnSuccess 和 doOnEach 有什么区别,我应该在哪个用例中使用它们?
【问题讨论】:
***.com/questions/28723341/… @JulioArboleda,这个问题讨论了别的事情 【参考方案1】:doOnSuccess
顾名思义,只会在您的 observable 成功返回项目时调用,并且不会引发错误。因此,您只会记录确认响应。
此外,doOnSuccess 适用于Singles 或 Maybes,它们只能发出单个项目(否则您将使用 doOnNext)。如果您使用可以发出多个项目的 Observable,您将使用 doOnNext
来获得完全相同的行为。
doOnEach
将被调用,无论 observable 是否发出项目,错误与否。它接收通知而不是项目本身。它将被称为:
可观察项很可能从 Single 变为 Observable。此外,还需要能够记录错误和成功,这就是没有选择doOnNext
的原因。
【讨论】:
那么,在 onNext、onComplete、onSuccess 和 onError 的情况下会调用 doOnEach 吗? 没错!但是请注意,Single 只有 onSuccess 和 onError(没有 onNext 和 onComplete),而典型的 Observable 有 onNext、onComplete 和 onError(没有 onSuccess) 你认为我应该将此信息添加到我的答案@MeladBasilius 中吗? 是的,您可以将此信息添加到您的答案中 @MeladBasilius 会的!如果这回答了您的问题,请记住接受它,顺便说一句。以上是关于doOnSuccess 和 doOnEach 之间的区别,以及在哪个用例中我应该使用它们中的每一个的主要内容,如果未能解决你的问题,请参考以下文章
在 WebFlux WebClient 中测试状态码时如何获取响应正文?
wpf 怎么实现 窗口和窗口之间的传值?页面和页面之间?窗口和页面之间?
生产者和消费者之间之间主要是______关系,这样就形成了______.