Symbol.dispose

Die Symbol.dispose statische Dateneigenschaft repräsentiert das wohlbekannte Symbol Symbol.dispose. Die using-Deklaration sucht dieses Symbol im Variableninitialisierer, um die Methode aufzurufen, wenn die Variable aus dem Gültigkeitsbereich verschwindet.

Wert

Das wohlbekannte Symbol Symbol.dispose.

Eigenschaften von Symbol.dispose
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

Beschreibung

Ein Objekt ist entsorgbar, wenn es die Methode [Symbol.dispose]() hat. Die Methode sollte die folgenden Semantiken haben:

  • Der Aufruf dieser Methode teilt dem Disposable-Objekt mit, dass der Anrufer nicht beabsichtigt, dieses Objekt weiterhin zu verwenden. Diese Methode sollte jede notwendige Logik ausführen, um die Ressource explizit zu bereinigen, einschließlich, aber nicht beschränkt auf Dateisystem-Handles, Streams, Hostobjekte usw.
  • Wenn von dieser Methode eine Ausnahme ausgelöst wird, bedeutet dies typischerweise, dass die Ressource nicht explizit freigegeben werden konnte.
  • Wenn die Methode mehrmals auf dasselbe Objekt aufgerufen wird, sollte die Funktion keine Ausnahme werfen. Diese Anforderung wird jedoch nicht erzwungen.

Diese Methode sollte kein Promise zurückgeben, da Promises, die von [Symbol.dispose]() zurückgegeben werden, nicht von await using abgewartet werden. Um asynchrone Disposables zu deklarieren, verwenden Sie Symbol.asyncDispose.

Beispiele

Benutzerdefinierte Disposables

[Symbol.dispose] ermöglicht die Erstellung benutzerdefinierter Disposables. Weitere Informationen finden Sie in der using-Referenz.

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

Specification
ECMAScript Async Explicit Resource Management
# table-1

Browser-Kompatibilität

Siehe auch