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 | |
---|---|
Schreibbar | nein |
Aufzählbar | nein |
Konfigurierbar | nein |
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.
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 |