Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Das DisposableStack-Objekt repräsentiert einen Stapel von Disposern, die ausgeführt werden, wenn der Stapel selbst entsorgt wird. Disposer-Funktionen werden in umgekehrter Reihenfolge der Registrierung mit starken Fehlerbehandlungsgarantien ausgeführt. Wenn Sie die move()-Methode aufrufen, wird die Verantwortung für das Aufrufen der derzeit registrierten Disposer an einen neuen DisposableStack übertragen und die Registrierung weiterer Disposer verhindert.
Ein DisposableStack ist im Hinblick auf seine Schnittstelle nicht exakt ein "Stapel". Es gibt mehrere Methoden, um Disposer hinzuzufügen, aber es gibt keine Möglichkeit, einen einzelnen Disposer zu entfernen. Stattdessen werden alle Disposer entnommen und nacheinander ausgeführt, wenn der Stapel entsorgt wird.
Sie registrieren verfügbare Ressourcen beim DisposableStack mit dessen Methoden use(), adopt() oder defer().
Wenn der Disposer dann aus dem Gültigkeitsbereich fällt, werden alle bei ihm registrierten Ressourcen in umgekehrter Reihenfolge der Registrierung entsorgt, es sei denn, sie wurden mit move() entfernt.
Es ist eine gute Praxis, den Ausdruck zur Ressourcenerfassung nicht in eine separate Anweisung auszulagern, egal wie lang der Ausdruck ist. Sie sollten den use()- oder adopt()-Aufruf immer um den Ressourcenerfassungsausdruck wickeln, um sicherzustellen, dass die Ressource sofort beim Stapel registriert wird.
Funktional sind diese beiden Code-Snippets gleichwertig. Das erste ist jedoch weniger fehleranfällig, da die Ressource in einer einzigen Zeile deklariert und registriert wird. Wenn jemand mehr Code zwischen die zweite und dritte Zeile des zweiten Snippets einfügt, könnte ein Fehler auftreten, der dazu führt, dass die Ressource austritt.
Erzeugt ein neues DisposableStack-Objekt.
Diese Eigenschaften sind auf DisposableStack.prototype definiert und werden von allen DisposableStack-Instanzen gemeinsam genutzt.
DisposableStack.prototype.constructorDie Konstruktorfunktion, die das Instanzobjekt erstellt hat. Für DisposableStack-Instanzen ist der Anfangswert der DisposableStack-Konstruktor.
DisposableStack.prototype.disposedSchreibgeschützt. Gibt true zurück, wenn das DisposableStack entsorgt wurde, oder false, wenn nicht.
DisposableStack.prototype[Symbol.toStringTag]Der Anfangswert der [Symbol.toStringTag]-Eigenschaft ist der String "DisposableStack". Diese Eigenschaft wird in Object.prototype.toString() verwendet.
Registriert einen Wert, der das Disposable-Protokoll nicht implementiert, beim Stapel, indem eine benutzerdefinierte Disposer-Funktion bereitgestellt wird.
DisposableStack.prototype.defer()Nimmt eine Callback-Funktion an, die aufgerufen wird, wenn der Stapel entsorgt wird.
DisposableStack.prototype.dispose()Entsorgt diesen Stapel, indem alle bei ihm registrierten Disposer in umgekehrter Reihenfolge der Registrierung aufgerufen werden.
DisposableStack.prototype.move()Erstellt eine neue DisposableStack-Instanz, die dieselben Disposer wie dieser Stapel enthält, und markiert dann diesen Stapel als entsorgt, ohne Disposer aufzurufen.
DisposableStack.prototype.use()Registriert einen Wert, der das Disposable-Protokoll beim Stapel implementiert.
DisposableStack.prototype[Symbol.dispose]Ein Alias für die dispose()-Methode.
| ECMAScript Async Explicit Resource Management # sec-disposablestack-objects |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.