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 repräsentiert das wohlbekannte Symbol Symbol.dispose. Die Deklaration using sucht im Initialisierungswert der Variablen nach diesem Symbol, um die Methode zu finden, die aufgerufen wird, wenn die Variable ihren Gültigkeitsbereich verlässt.
Wert
Das wohlbekannte Symbol Symbol.dispose.
Eigenschaften von Symbol.dispose | |
|---|---|
| Schreibbar | nein |
| Aufzählbar | nein |
| Konfigurierbar | nein |
Beschreibung
Ein Objekt kann freigegeben werden, wenn es über die Methode [Symbol.dispose]() verfügt. Von dieser Methode wird folgendes Verhalten erwartet:
- Der Aufruf dieser Methode teilt dem freizugebenden Objekt mit, dass der aufrufende Code es nicht weiter verwenden möchte. Die Methode sollte alle nötigen Schritte ausführen, um die Ressource explizit zu bereinigen. 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 mehr als einmal 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
Mit [Symbol.dispose] können Sie eigene freizugebende Objekte erstellen. Weitere Informationen finden Sie in der Referenz zu using.
class Disposable {
#disposed;
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> |