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

View in English Always switch to English

Symbol.dispose

Eingeschränkt verfügbar

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.

Die statische Dateneigenschaft Symbol.dispose steht für das bekannte Symbol Symbol.dispose. Die using-Deklaration sucht im Initialisierungswert der Variablen nach diesem Symbol, um die Methode zu ermitteln, die aufgerufen werden soll, wenn die Variable ihren Gültigkeitsbereich verlässt.

Wert

Das bekannte Symbol Symbol.dispose.

Eigenschaften von Symbol.dispose
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

Beschreibung

Ein Objekt kann explizit freigegeben werden, wenn es über die Methode [Symbol.dispose]() verfügt. Für diese Methode wird das folgende Verhalten erwartet:

  • Der Aufruf dieser Methode teilt dem freizugebenden Objekt mit, dass der Aufrufer es nicht weiter verwenden möchte. Die Methode sollte alle erforderlichen Schritte ausführen, um die Ressource explizit freizugeben. Dazu gehören unter anderem Dateisystem-Handles, Streams und Host-Objekte.
  • Wenn diese Methode eine Ausnahme auslöst, bedeutet dies in der Regel, dass die Ressource nicht explizit freigegeben werden konnte.
  • Wird die Methode mehrmals für dasselbe Objekt aufgerufen, sollte sie keine Ausnahme auslösen. Diese Anforderung wird jedoch nicht erzwungen.

Diese Methode sollte kein Promise zurückgeben, da von [Symbol.dispose]() zurückgegebene Promises durch await using nicht abgewartet werden. Verwenden Sie Symbol.asyncDispose, um asynchron freizugebende Objekte zu definieren.

Beispiele

Benutzerdefinierte freizugebende Objekte

[Symbol.dispose] ermöglicht es, eigene freizugebende Objekte zu erstellen. Weitere Informationen finden Sie in der Referenz zu using.

js
class Disposable {
  constructor() {
    this.disposed = false;
  }

  [Symbol.dispose]() {
    this.disposed = true;
  }

  get isDisposed() {
    return this.disposed;
  }
}

const resource = new Disposable();
{
  using resourceUsed = resource;
  console.log(resource.isDisposed); // false
}
console.log(resource.isDisposed); // true

Spezifikationen

Spezifikation
ECMAScript Async Explicit Resource Management
# sec-well-known-symbols

Browser-Kompatibilität

Siehe auch