Symbol.asyncDispose

Die Symbol.asyncDispose statische Daten-Eigenschaft repräsentiert das wohlbekannte Symbol Symbol.asyncDispose. Die Deklaration await using sucht dieses Symbol im Variablen-Initializer, um die Methode aufzurufen, wenn die Variable aus dem Gültigkeitsbereich tritt.

Wert

Das wohlbekannte Symbol Symbol.asyncDispose.

Eigenschaften von Symbol.asyncDispose
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

Beschreibung

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

  • Das Aufrufen dieser Methode benachrichtigt das AsyncDisposable-Objekt, dass der Aufrufer nicht beabsichtigt, dieses Objekt weiterhin zu verwenden. Diese Methode sollte jede notwendige Logik zum expliziten Aufräumen der Ressource ausführen, einschließlich, aber nicht beschränkt auf Dateisystem-Handles, Streams, Host-Objekte usw.
  • Diese Methode kann ein Promise zurückgeben, das abgewartet wird, bevor fortgefahren wird.
  • Wenn von dieser Methode eine Ausnahme geworfen wird, bedeutet dies typischerweise, dass die Ressource nicht explizit freigegeben werden konnte. Ein AsyncDisposable-Objekt gilt erst als "entsorgt", wenn das resultierende Promise erfüllt wurde.
  • Wenn auf dasselbe Objekt mehrmals aufgerufen wird, sollte die Funktion keine Ausnahme werfen. Diese Anforderung wird jedoch nicht erzwungen.

Beispiele

Benutzerdefinierte asynchrone Entsorgungen

[Symbol.asyncDispose] ermöglicht die Erstellung von benutzerdefinierten asynchronen Entsorgungen. Weitere Informationen finden Sie im await using Verweis.

js
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); // true

Spezifikationen

No specification found

No specification data found for javascript.builtins.Symbol.asyncDispose.
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.

Browser-Kompatibilität

Siehe auch