Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

AsyncDisposableStack.prototype.adopt()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Die adopt() Methode von AsyncDisposableStack-Instanzen registriert einen Wert, der das asynchrone Disposable-Protokoll nicht implementiert, auf dem Stack, indem eine benutzerdefinierte Entsorgerfunktion bereitgestellt wird.

Siehe DisposableStack.prototype.adopt() für allgemeine Informationen über die adopt()-Methode.

Syntax

js
adopt(value, onDispose)

Parameter

value

Jeder Wert, der auf dem Stack registriert werden soll.

onDispose

Eine Funktion, die aufgerufen wird, wenn der Stack entsorgt wird. Die Funktion erhält value als einziges Argument und kann ein Promise zurückgeben, das abgewartet wird.

Rückgabewert

Der gleiche value, der übergeben wurde.

Ausnahmen

TypeError

Wird ausgelöst, wenn onDispose keine Funktion ist.

ReferenceError

Wird ausgelöst, wenn der Stack bereits entsorgt ist.

Beispiele

Verwendung von adopt()

Diese Funktion erstellt einen Datei-Handle (als Node.js FileHandle), der geschlossen wird, wenn die Funktion abgeschlossen wird. Wir nehmen an, dass der Datei-Handle das asynchrone Disposable-Protokoll nicht implementiert (in Wirklichkeit tut er das), somit verwenden wir adopt(), um ihn auf dem Stack zu registrieren. Da die Methode handle.close() ein Promise zurückgibt, müssen wir einen AsyncDisposableStack verwenden, damit das Entsorgen abgewartet werden kann.

js
async function readFile(path) {
  await using disposer = new AsyncDisposableStack();
  const handle = disposer.adopt(
    await fs.open(path),
    async (handle) => await handle.close(),
  );
  const data = await handle.read();
  // The handle.close() method is called and awaited here before exiting
  return data;
}

Spezifikationen

Specification
ECMAScript Async Explicit Resource Management
# sec-asyncdisposablestack.prototype.adopt

Browser-Kompatibilität

Siehe auch