doAfterTerminate 和 doFinally 之间的区别
Difference between doAfterTerminate and doFinally
有人知道 RxJava 2 中运算符 "doAfterTerminate" 和 "doFinally" 有什么区别吗?
区别在于doFinally
执行提供的Action
如果下游cancels/disposes序列除了常规onError
或onComplete
终止路径.这允许通过所有三种方式清理和释放资源。运营商还保证即使 onError
或 onComplete
信号与取消竞争,每个订阅也只执行一次操作。
相比之下,doAfterTerminate
只涵盖onError
和onComplete
。
您可以用 doAfterTerminate
+ doOnCancel
模拟 doFinally
,但是,拆分操作时,操作参数可能会同时执行并导致非幂等清理逻辑出现问题。
有人知道 RxJava 2 中运算符 "doAfterTerminate" 和 "doFinally" 有什么区别吗?
区别在于doFinally
执行提供的Action
如果下游cancels/disposes序列除了常规onError
或onComplete
终止路径.这允许通过所有三种方式清理和释放资源。运营商还保证即使 onError
或 onComplete
信号与取消竞争,每个订阅也只执行一次操作。
相比之下,doAfterTerminate
只涵盖onError
和onComplete
。
您可以用 doAfterTerminate
+ doOnCancel
模拟 doFinally
,但是,拆分操作时,操作参数可能会同时执行并导致非幂等清理逻辑出现问题。