Ich muss benachrichtigt werden, wenn sich etwas an meinem Observablen anmeldet. Ich muss auch benachrichtigt werden, dass meine Observable entweder fehlerhaft oder vollständig ist. Also dachte ich, ich sollte doOnSubscribe
implementieren:Wann sollte doOnTerminate vs doOnUnsubscribe verwendet werden?
eine Aktion registrieren zu nehmen, wenn ein Beobachter abonniert einem beobachtbare
und doOnTerminate
:
eine Aktion registrieren zu nehmen, wenn ein beobachtbares Abgeschlossen, entweder erfolgreich oder mit einem Fehler
Dann sah ich doOnUnsubscribe
:
eine Aktion registrieren zu nehmen, wenn ein Beobachter Abmeldungen von einem beobachtbare
und dachte, die Symmetrie der doOnSubscribe
/doOnUnsubscribe
besser wäre.
Also, wird doOnTerminate
immer vor doOnUnsubscribe
aufgerufen werden? Wenn ich nur wissen will, dass die Dinge "erledigt" sind, ist es wirklich wichtig, was ich wähle?
DoOnTerminal hat folgende Definition: "Ändert die Quelle Observable so, dass sie eine Aktion aufruft, wenn sie onCompleted oder onError aufruft". Es ist völlig anders als doOnUnsubscribe. Wenn Sie ein Abonnement für eine heiße Observable haben, von der Sie sich abmelden, erhalten Sie einen Aufruf von doOnUnsubscribe, und das Observable wird weiterhin Werte produzieren. Wenn Sie benachrichtigt werden möchten, wenn das Observable "erledigt" ist (onComplete, onError), würden Sie doOnTerminate verwenden. Wenn Sie über den erfolgreichen Abschluss wissen möchten, würde ich doOnCompleted verwenden. –