RxJava:d​​oOnError('callback') 和 subscribe(*, 'callback') 中的回调有什么区别

RxJava: what is difference between callbacks in doOnError('callback') and subscribe(*, 'callback')

在我上一个项目中,我使用了 rxJava,我意识到 observable.doOnError('onErrorCallback').subscribe(action)observable.subscribe(action, 'onErrorCallback') 的行为方式不同。即使从文档中,我也不清楚它们之间到底有什么区别,以及何时应该使用第一个和第二个变体。

根据文档doOnError 默认情况下不在特定调度程序上运行

doOnError 运算符允许您将副作用注入到序列的错误传播中,但不会阻止错误传播本身。订阅者是事件的最终目的地,它们 'exit' 序列。

您可以通过以下示例了解 doOnError 的用处:

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

它允许您查看错误,但允许您在出现错误时重试。最终订阅者:

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

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