RxJava:doOnError('回调')和 subscribe(*, 'callback') 中的回调有什么区别?

2022-09-02 13:11:01

在我的上一个项目中,我使用rxJava,我意识到这一点,并以不同的方式表现。即使从文档中看,对我来说也不明显它们之间的区别是什么,以及我什么时候应该使用第一和第二个变体。observable.doOnError('onErrorCallback').subscribe(action)observable.subscribe(action, 'onErrorCallback')


答案 1

运算符允许您将副作用注入序列的错误传播中,但不会停止错误传播本身。订阅服务器是事件的最终目标,它们“退出”序列。doOnError

您可以通过以下示例看到 的有用性:doOnError

api.getData()
.doOnError(e -> log.error(e))
.retry(2)
.subscribe(...)

它允许您窥视错误,但允许您在发生错误时重试。对于最终订阅者:

api.getData()
.subscribe(v -> {}, e -> log.error(e) );

您必须以自己的方式安排错误的处理(除了日志记录之外)。


答案 2

根据文档,默认情况下不对特定的计划程序运行doOnError


推荐