doAfterTerminate和doFinally之间的区别

时间:2017-11-15 11:51:47

标签: java rx-java2

有人知道RxJava 2中运算符“doAfterTerminate”和“doFinally”之间的区别是什么?

1 个答案:

答案 0 :(得分:28)

不同之处在于doFinally执行提供的Action,如果下游取消/处置序列以及常规onErroronComplete终止路径。这允许通过所有三种方式清理和释放资源。即使在onErroronComplete信号与取消竞争的情况下,运营商也保证每次订阅只执行一次操作。

相比之下,doAfterTerminate仅涵盖onErroronComplete

您可以使用doFinally + doAfterTerminate模拟doOnCancel,但是,如果要拆分操作,则可能会执行操作参数并导致非幂等清理逻辑出现问题。