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

时间:2015-05-15 02:16:07

标签: java reactive-programming rx-java

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

2 个答案:

答案 0 :(得分:22)

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

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

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

它允许您查看错误,但允许您在发生错误时重试。终端用户:

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

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

答案 1 :(得分:0)

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