doAfterTerminate 和 doFinally 之间的区别

Difference between doAfterTerminate and doFinally

有人知道 RxJava 2 中运算符 "doAfterTerminate" 和 "doFinally" 有什么区别吗?

区别在于doFinally执行提供的Action如果下游cancels/disposes序列除了常规onErroronComplete终止路径.这允许通过所有三种方式清理和释放资源。运营商还保证即使 onErroronComplete 信号与取消竞争,每个订阅也只执行一次操作。

相比之下,doAfterTerminate只涵盖onErroronComplete

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