Symbol.dispose
Die Symbol.dispose
statische Dateneigenschaft repräsentiert das wohlbekannte Symbol Symbol.dispose
. Die using
Deklaration sucht dieses Symbol im Variableninitialisierer für die Methode, die aufgerufen werden soll, wenn die Variable aus dem Bereich fällt.
Wert
Das wohlbekannte Symbol Symbol.dispose
.
Eigenschaften von Symbol.dispose | |
---|---|
Schreibbar | nein |
Aufzählbar | nein |
Konfigurierbar | nein |
Beschreibung
Ein Objekt ist entsorgbar, wenn es die Methode [Symbol.dispose]()
besitzt. Es wird erwartet, dass die Methode folgende Semantik hat:
- Der Aufruf dieser Methode benachrichtigt das entsorgbare Objekt darüber, dass der Aufrufer nicht beabsichtigt, dieses Objekt weiter zu verwenden. Diese Methode sollte jegliche notwendige Logik durchführen, um die Ressource explizit aufzuräumen, einschließlich, aber nicht beschränkt auf, Dateisystem-Handles, Streams, Host-Objekte usw.
- Wenn eine Ausnahme von dieser Methode geworfen wird, bedeutet das normalerweise, dass die Ressource nicht explizit freigegeben werden konnte.
- Wenn die Methode mehr als einmal auf demselben Objekt aufgerufen wird, sollte die Funktion keine Ausnahme werfen. Diese Anforderung wird jedoch nicht erzwungen.
Diese Methode sollte kein Versprechen zurückgeben, da Versprechen, die von [Symbol.dispose]()
zurückgegeben werden, nicht von await using
erwartet werden. Um asynchrone Entsorgungen zu deklarieren, verwenden Sie Symbol.asyncDispose
.
Beispiele
Benutzerdefinierte Entsorgbare
[Symbol.dispose]
ermöglicht die Erstellung von benutzerdefinierten Entsorgbaren. Weitere Informationen finden Sie im using
Verweis.
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
No specification found
No specification data found for javascript.builtins.Symbol.dispose
.
Check for problems with this page or contribute a missing spec_url
to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.