DisposableStack : méthode defer()
Limited availability
Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.
La méthode defer() des instances de DisposableStack prend une fonction de rappel à appeler lors de la libération de la pile.
Syntaxe
defer(onDispose)
Paramètres
onDispose-
Une fonction qui sera appelée lors de la libération de la pile. La fonction ne reçoit aucun argument.
Valeur de retour
Aucune (undefined).
Exceptions
TypeError-
Levée si
onDisposen'est pas une fonction. ReferenceError-
Levée si la pile est déjà libérée.
Description
L'objectif principal de defer() est d'enregistrer une fonction de rappel de nettoyage qui n'est pas spécifique à la libération d'une ressource particulière. Si la fonction de rappel concerne une ressource, vous devez utiliser use() ou adopt() à la place. Vous pouvez aussi utiliser defer lorsque la ressource n'est pas gérée dans votre code :
function consumeReader(reader) {
using disposer = new DisposableStack();
disposer.defer(() => reader.releaseLock());
// Effectuer une opération avec reader
}
Exemples
>Utiliser la méthode defer()
Cette fonction place un verrou simple pour empêcher plusieurs opérations asynchrones de s'exécuter en même temps. Le verrou est libéré lorsque la fonction se termine.
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;
}
Spécifications
| Specification |
|---|
| ECMAScript Async Explicit Resource Management> # sec-asyncdisposablestack.prototype.defer> |
Compatibilité des navigateurs
Voir aussi
- Gestion des ressources JavaScript
- L'objet
DisposableStack - La méthode
DisposableStack.prototype.adopt() - La méthode
DisposableStack.prototype.use()