Quelqu'un sait-il quelle est la différence entre les opérateurs "doAfterTerminate" et "doFinally" dans RxJava 2?
La différence est que doFinally
exécute les Action
fournis si l'aval annule/supprime la séquence en plus des chemins de terminaison réguliers onError
ou onComplete
. Cela permet de nettoyer et de libérer des ressources par les trois moyens. L'opérateur garantit également que l'action est exécutée exactement une fois par abonnement, même si onError
ou onComplete
signale la course avec une annulation.
En revanche, doAfterTerminate
ne couvre que onError
et onComplete
.
Vous pouvez émuler doFinally
avec doAfterTerminate
+ doOnCancel
, cependant, étant divisé une opération, les paramètres d'action peuvent être exécutés à la fois et provoquer des problèmes avec la logique de nettoyage non idempotent.