[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/DisposableStack [Back]  [Original]

DisposableStack - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

DisposableStack

Eingeschrnkt verfgbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

Das DisposableStack-Objekt reprsentiert einen Stapel von Disposern, die ausgefhrt werden, wenn der Stapel selbst entsorgt wird. Disposer-Funktionen werden in umgekehrter Reihenfolge der Registrierung mit starken Fehlerbehandlungsgarantien ausgefhrt. Wenn Sie die move()-Methode aufrufen, wird die Verantwortung fr das Aufrufen der derzeit registrierten Disposer an einen neuen DisposableStack bertragen und die Registrierung weiterer Disposer verhindert.

In diesem Artikel

Beschreibung

Ein DisposableStack ist im Hinblick auf seine Schnittstelle nicht exakt ein "Stapel". Es gibt mehrere Methoden, um Disposer hinzuzufgen, aber es gibt keine Mglichkeit, einen einzelnen Disposer zu entfernen. Stattdessen werden alle Disposer entnommen und nacheinander ausgefhrt, wenn der Stapel entsorgt wird.

Sie registrieren verfgbare Ressourcen beim DisposableStack mit dessen Methoden use(), adopt() oder defer().

js
using disposer = new DisposableStack();
const reader = disposer.use(stream.getReader());

Wenn der Disposer dann aus dem Gltigkeitsbereich fllt, 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.

js
using disposer = new DisposableStack();
const reader = stream.getReader();
disposer.use(reader);

Funktional sind diese beiden Code-Snippets gleichwertig. Das erste ist jedoch weniger fehleranfllig, da die Ressource in einer einzigen Zeile deklariert und registriert wird. Wenn jemand mehr Code zwischen die zweite und dritte Zeile des zweiten Snippets einfgt, knnte ein Fehler auftreten, der dazu fhrt, dass die Ressource austritt.

Konstruktor

DisposableStack()

Erzeugt ein neues DisposableStack-Objekt.

Instanzeigenschaften

Diese Eigenschaften sind auf DisposableStack.prototype definiert und werden von allen DisposableStack-Instanzen gemeinsam genutzt.

DisposableStack.prototype.constructor

Die Konstruktorfunktion, die das Instanzobjekt erstellt hat. Fr DisposableStack-Instanzen ist der Anfangswert der DisposableStack-Konstruktor.

DisposableStack.prototype.disposed

Schreibgeschtzt. Gibt true zurck, 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.

Instanzmethoden

DisposableStack.prototype.adopt()

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 enthlt, 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 fr die dispose()-Methode.

Spezifikationen

Spezifikation
ECMAScript Async Explicit Resource Management
# sec-disposablestack-objects

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page