Vollmacht Muster für auto abmelden

Vollmacht Muster für auto abmelden

Mit RxLifecycle schlagen Sie einfach einen compose()-Aufruf auf einen beliebigen Stream und er schließt den Stream automatisch ab, wenn bestimmte Lebenszyklusereignisse auftreten. Es war zurück zu den alten Tagen, in der man sich keine Sorgen über Speicherlecks machen musste! Es gibt zwei Arten von Beobachtbaren, erstens, die Wert und vollständig aussenden, und zweitens, die Werte aussenden und nicht automatisch abschließen. Für Beobachtbare, die meistens einen Wert aussenden und vervollständigen, werde ich endlich und für Beobachtbare aufrufen, die Werte aussenden, bis wir ihnen manuell sagen, dass sie aufhören sollen — unendlich . Wenn wir ein Beobobachtbares abonnieren, müssen wir uns von ihm abmelden, da es sonst Speicherverluste und unerwartetes Verhalten in der Anwendung verursacht. Eine Möglichkeit kann sein, sich überhaupt nicht abzumelden – nur um zu ändern, was das Abonnement bedeutet. Wenn der Ereignishandler intelligent genug gemacht werden könnte, um zu wissen, was er basierend auf dem Kontext tun soll, müssen Sie sich nicht von vornherein abmelden. 🎩 fertig! Jetzt können Sie sich von allem magisch abmelden! Aber warten Sie eine Minute, was ist, wenn Aus irgendeinem verrückten Grund müssen Sie Abonnements ausschließen? Sie möchten sich beispielsweise nicht vom $two Abonnement abmelden, wenn die Komponente zerstört wird. Das Abbestellen von nullierbaren Abonnements ist ein einfacher Einzeiler. Bevor Sie auf Nullfähigkeit überprüfen mussten (oder eine Einzeiler-Utility-Funktion verwenden). Ärgerlich. Jetzt können Sie einfach mySubscription anrufen?.

abmelden(). Angular kümmert sich um die Abmeldung von vielen beobachtbaren Abonnements, wie sie vom Http-Dienst zurückgegeben werden, oder bei Verwendung der async-Pipe. Außerhalb dessen kann es jedoch schnell zu einem Durcheinander werden, alle Abonnements im Auge zu behalten und sicherzustellen, dass wir uns von denen abmelden, die lange gelebt haben. Oder wir können es sicher spielen und uns von so ziemlich allem abmelden, was noch mühsamer wird. Zum Glück für uns können wir die Leistungsfähigkeit von RxJS und des takeUntil-Operators nutzen, um Abonnements deklarativ zu verwalten. Die Absicht von IDisposable ist es, Ihren Code besser funktionieren zu lassen, ohne dass Sie viel manuelle Arbeit leisten müssen. Nutzen Sie seine Macht zu Ihren Gunsten und überholen Sie einige künstliche “Design Absicht” Unsinn. Ich denke, Einweg ist für alles, was GC nicht automatisch kümmern kann, und Ereignisreferenzen zählen in meinem Buch. Hier ist eine Helferklasse, die ich mir ausgedacht habe. Aus all dem, was ich über Einweg-Einweg lesen würde, würde ich argumentieren, dass sie wirklich hauptsächlich für die Lösung eines Problems erfunden wurden: die rechtzeitige Freigabe nicht verwalteter Systemressourcen. Aber immer noch alle Beispiele, die ich gefunden habe, sind nicht nur auf das Thema der nicht verwalteten Ressourcen konzentriert, sondern haben auch eine andere Eigenschaft gemeinsam: Dispose wird aufgerufen, nur um einen Prozess zu beschleunigen, der sonst später automatisch aufgetreten wäre (GC -> Finalizer -> dispose) Es gibt eine Menge Debatte online darüber, wie man sich abmelden, aber es gibt definitiv einen Konsens darüber, wann wir uns abmelden sollten.

Die kurze Antwort ist ngOnDestroy. Komponenten übergeben ihre Abonnements nach oben, bis sie von jemandem verarbeitet werden. Mit anderen Worten, wenn eine Komponente von ihrem übergeordneten Element beobachtbar ist, aber nicht weiß, wann sie sich abmelden soll, übergibt sie das resultierende Abonnement nach oben an das übergeordnete Element, da das übergeordnete Element den Lebenszyklus besser erfassen sollte. Manuelle Verwaltung von Abonnements. Das bedeutet, dass Sie an Abonnements hängen (oder sie in ein CompositeSubscription stopfen) und dann bei Bedarf manuell abmelden() / clear() aufrufen. In Winkelkomponenten oder Direktiven werden Sie innerhalb des ngOnDestroy-Lebenszyklus-Hooks abgemeldet.