2017-11-15 26 views
1

RxJava 2の演算子 "doAfterTerminate"と "doFinally"の違いは誰にも分かりますか?doAfterTerminateとdoFinallyの相違点

+0

JavaDoc [doAfterTerminat](http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Observable.html#doAfterTerminate-io.reactivex.functions.Action-)と[doFinally](http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Observable.html#doFinally-io.reactivex.functions.Action-)? – akarnokd

+0

ありがとう! 私は[docs here](http://reactivex.io/documentation/operators)を見ましたが、あなたのリンクでは見ていません –

答えて

2

差が下流キャンセルが/で正規onError又はonComplete終了パスに加えて配列を配置した場合doFinallyが設けActionを実行することです。これにより、3つの手段によるリソースのクリーンアップと解放が可能になります。また、オペレータは、onErrorまたはonComplete信号がキャンセルと競合した場合でも、サブスクリプションごとにアクションが1回だけ実行されることを保証します。対照的に、doAfterTerminateは、onErrorおよびonCompleteをカバーするだけである。

doAfterTerminate + doOnCancelにエミュレートできますが、操作が分割されているため、アクションパラメータが両方実行され、非冪等のクリーンアップロジックに問題が発生する可能性があります。

関連する問題