有人知道RxJava 2中运算符“doAfterTerminate”和“doFinally”之间的区别是什么?
答案 0 :(得分:28)
不同之处在于doFinally
执行提供的Action
,如果下游取消/处置序列以及常规onError
或onComplete
终止路径。这允许通过所有三种方式清理和释放资源。即使在onError
或onComplete
信号与取消竞争的情况下,运营商也保证每次订阅只执行一次操作。
相比之下,doAfterTerminate
仅涵盖onError
和onComplete
。
您可以使用doFinally
+ doAfterTerminate
模拟doOnCancel
,但是,如果要拆分操作,则可能会执行操作参数并导致非幂等清理逻辑出现问题。