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

Ste*_*ngo 19 java reactive-programming rx-java

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

aka*_*okd 23

doOnError运营商允许你注入副作用成序列的错误传播,但并不能阻止错误传播本身.订阅者是事件的最终目的地,他们"退出"序列.

您可以doOnError通过以下示例看到它的用处:

api.getData()
.doOnError(e -> log.error(e))
.retry(2)
.subscribe(...)
Run Code Online (Sandbox Code Playgroud)

它允许您查看错误,但允许您在发生错误时重试.对于最终订户:

api.getData()
.subscribe(v -> {}, e -> log.error(e) );
Run Code Online (Sandbox Code Playgroud)

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