Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Symbol.asyncDispose
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die statische DateneigenschaftSymbol.asyncDispose repräsentiert daswohlbekannte SymbolSymbol.asyncDispose. Dieawait using-Deklaration sucht dieses Symbol im Variablen-Initializer für die Methode, die aufgerufen werden soll, wenn die Variable außer Reichweite gerät.
In diesem Artikel
Wert
Das wohlbekannte SymbolSymbol.asyncDispose.
Eigenschaften vonSymbol.asyncDispose | |
|---|---|
| Schreibbar | nein |
| Aufzählbar | nein |
| Konfigurierbar | nein |
Beschreibung
Ein Objekt ist asynchron disposable, wenn es die Methode[Symbol.asyncDispose]() hat. Diese Methode sollte die folgenden Semantiken besitzen:
- Der Aufruf dieser Methode benachrichtigt das AsyncDisposable-Objekt, dass der Aufrufer nicht die Absicht hat, das Objekt weiter zu verwenden. Diese Methode sollte alle notwendigen Logiken ausführen, um die Ressource explizit zu bereinigen, einschließlich, aber nicht beschränkt auf Dateisystem-Handles, Streams, Host-Objekte etc.
- Diese Methode kann ein Promise zurückgeben, das vor dem Fortfahren abgewartet wird.
- Wenn eine Ausnahme von dieser Methode ausgelöst wird, bedeutet das typischerweise, dass die Ressource nicht explizit freigegeben werden konnte. Ein AsyncDisposable-Objekt wird nicht als "disposed" betrachtet, bis das resultierende Promise erfüllt worden ist.
- Wenn die Funktion mehr als einmal auf dasselbe Objekt aufgerufen wird, sollte keine Ausnahme ausgelöst werden. Diese Anforderung wird jedoch nicht erzwungen.
Beispiele
>Benutzerdefinierte asynchrone Disposables
[Symbol.asyncDispose] ermöglicht die Erstellung von benutzerdefinierten asynchronen Disposables. Siehe die Referenz zuawait using für weitere Informationen.
class Disposable { #fileHandle; #disposed; constructor(handle) { this.#disposed = false; this.#fileHandle = handle; } async [Symbol.asyncDispose]() { await this.#fileHandle.close(); this.disposed = true; } get isDisposed() { return this.disposed; }}const resource = new Disposable(await fs.open("my-file.txt", "r"));{ await using resourceUsed = resource; console.log(resource.isDisposed); // false}console.log(resource.isDisposed); // trueSpezifikationen
| Specification |
|---|
| ECMAScript Async Explicit Resource Management> # table-1> |
Browser-Kompatibilität
Loading…