在上一个项目中,我使用rxJava,并且意识到observable.doOnError('onErrorCallback').subscribe(action)observable.subscribe(action, 'onErrorCallback')的行为方式不同。即使从文档中,对我来说,它们之间的确切区别以及何时应该使用第一个和第二个变体之间的区别也并不明显。

最佳答案

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

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

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

它使您可以查看错误,但在出现错误的情况下可以重试。与最终用户:
api.getData()
.subscribe(v -> {}, e -> log.error(e) );

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

10-06 07:19