DisposableStack.prototype.use()
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 Methode use() von DisposableStack-Instanzen registriert einen Wert im Stack, der das Disposable-Protokoll implementiert.
Syntax
use(value)
Parameter
value-
Der Wert, der im Stack registriert werden soll. Er muss entweder eine
[Symbol.dispose]()-Methode enthalten odernullbeziehungsweiseundefinedsein.
Rückgabewert
Derselbe value, der übergeben wurde.
Ausnahmen
TypeError-
Wird ausgelöst, wenn
valuewedernullnochundefinedist und keine[Symbol.dispose]()-Methode enthält. ReferenceError-
Wird ausgelöst, wenn der Stack bereits bereinigt wurde.
Beschreibung
Der Hauptzweck von use() besteht darin, einen Wert im Stack zu registrieren, der das Disposable-Protokoll implementiert – entsprechend der using-Deklaration. Wenn der Wert das Disposable-Protokoll nicht implementiert (also keine [Symbol.dispose]()-Methode hat), verwenden Sie stattdessen adopt() und übergeben Sie einen Callback, der die Bereinigungsmethode der Ressource aufruft.
Sie sollten Ihre Ressource unmittelbar nach ihrer Deklaration registrieren. Umschließen Sie daher den Ausdruck zum Abrufen der Ressource immer mit use(), statt ihn in eine separate Anweisung auszulagern.
using disposer = new DisposableStack();
const reader = stream.getReader();
disposer.use(reader);
Beispiele
>use() verwenden
Dieser Code liest einen ReadableStream mithilfe eines ReadableStreamDefaultReader. Der Reader wird automatisch geschlossen, wenn die Funktion abgeschlossen ist – vorausgesetzt, er implementiert eine [Symbol.dispose]()-Methode, die die Sperre für den Stream synchron freigibt.
{
using disposer = new DisposableStack();
const reader = disposer.use(stream.getReader());
const { value, done } = reader.read();
if (!done) {
// Process the value
}
// The reader.releaseLock() method is called here before exiting
}
Spezifikationen
| Spezifikation |
|---|
| ECMAScript Async Explicit Resource Management> # sec-disposablestack.prototype.use> |