Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Die adopt() Methode von DisposableStack Instanzen registriert einen Wert, der das disposable Protokoll nicht implementiert, auf dem Stack, indem eine benutzerdefinierte Dispose-Funktion bereitgestellt wird.
Beliebiger Wert, der auf dem Stack registriert werden soll.
onDisposeEine Funktion, die aufgerufen wird, wenn der Stack entsorgt wird. Die Funktion erhält value als einziges Argument.
Der gleiche value, der übergeben wurde.
Wird ausgelöst, wenn onDispose keine Funktion ist.
ReferenceErrorWird ausgelöst, wenn der Stack bereits entsorgt ist.
Der Hauptzweck von adopt() ist es, einen Wert zu registrieren, der das disposable Protokoll nicht implementiert. Wenn der Wert bereits disposable ist, können Sie stattdessen use() verwenden, welches automatisch die [Symbol.dispose]() Methode des Wertes als Disposer nutzt.
adopt(value, onDispose) ist fast das gleiche wie defer(() => onDispose(value)), aber es ermöglicht Ihnen, die Ressource zu deklarieren und auf derselben Zeile zu registrieren. Auf diese Weise gibt es minimalen Spielraum für Fehler zwischen der Erstellung und Registrierung der Ressource, was dazu führen könnte, dass die Ressource verloren geht.
Im gleichen Sinne des "Registrieren Sie Ihre Ressource, sobald sie deklariert ist", sollten Sie immer Ihren Ressourcenerwerbsausdruck in adopt() einwickeln, anstatt ihn in eine separate Anweisung auszulagern.
Dieses Codebeispiel konsumiert einen ReadableStream über einen ReadableStreamDefaultReader. Der Reader implementiert das disposable Protokoll nicht, daher nutzen wir adopt(), um ihn auf dem Stack zu registrieren.
| ECMAScript Async Explicit Resource Management # sec-asyncdisposablestack.prototype.adopt |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.