DisposableStack.prototype.defer()
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 defer() von DisposableStack-Instanzen nimmt eine Callback-Funktion entgegen, die aufgerufen wird, wenn der Stack freigegeben wird.
Syntax
defer(onDispose)
Parameter
onDispose-
Eine Funktion, die aufgerufen wird, wenn der Stack freigegeben wird. Die Funktion erhält keine Argumente.
Rückgabewert
Keiner (undefined).
Ausnahmen
TypeError-
Wird ausgelöst, wenn
onDisposekeine Funktion ist. ReferenceError-
Wird ausgelöst, wenn der Stack bereits freigegeben wurde.
Beschreibung
Der Hauptzweck von defer() besteht darin, einen Callback zur Bereinigung zu registrieren, der nicht an die Freigabe einer bestimmten Ressource gebunden ist. Wenn sich der Callback auf eine bestimmte Ressource bezieht, sollten Sie stattdessen use() oder adopt() verwenden. Sie können defer auch verwenden, wenn die Ressource nicht in Ihrem Code verwaltet wird:
function consumeReader(reader) {
using disposer = new DisposableStack();
disposer.defer(() => reader.releaseLock());
// Do something with reader
}
Beispiele
>defer() verwenden
Diese Funktion setzt eine einfache Sperre, damit nicht mehrere asynchrone Operationen gleichzeitig ausgeführt werden. Die Sperre wird aufgehoben, wenn die Funktion abgeschlossen ist.
let isLocked = false;
async function requestWithLock(url, options) {
if (isLocked) {
return undefined;
}
using disposer = new DisposableStack();
isLocked = true;
disposer.defer(() => (isLocked = false));
const data = await fetch(url, options).then((res) => res.json());
return data;
}
Spezifikationen
| Spezifikation |
|---|
| ECMAScript Async Explicit Resource Management> # sec-asyncdisposablestack.prototype.defer> |