DisposableStack : méthode use()
Limited availability
Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.
La méthode use() des instances de DisposableStack enregistre une valeur qui implémente le protocole de libération dans la pile.
Syntaxe
use(value)
Paramètres
value-
La valeur à enregistrer dans la pile. Elle doit soit contenir une méthode
[Symbol.dispose](), soit êtrenullouundefined.
Valeur de retour
La même valeur value qui a été passée en argument.
Exceptions
TypeError-
Levée si
valuen'est pasnullouundefined, et ne contient pas de méthode[Symbol.dispose](). ReferenceError-
Levée si la pile est déjà libérée.
Description
L'objectif principal de use() est d'enregistrer une valeur qui implémente le protocole de libération dans la pile, comme l'équivalent de la déclaration using. Si la valeur n'implémente pas le protocole de libération (elle ne possède pas la méthode [Symbol.dispose]()), utilisez adopt() à la place, en passant une fonction de rappel qui appelle la méthode de nettoyage de la ressource.
Vous devez enregistrer votre ressource dès sa déclaration. Cela signifie que vous devez toujours envelopper l'expression d'acquisition de la ressource dans use(), au lieu de l'extraire dans une instruction séparée.
using disposer = new DisposableStack();
const reader = stream.getReader();
disposer.use(reader);
Exemples
>Utiliser la méthode use()
Ce code consomme un ReadableStream via un ReadableStreamDefaultReader. Le lecteur est automatiquement fermé lorsque la fonction se termine, en supposant qu'il implémente une méthode [Symbol.dispose]() qui libère le verrou sur le flux de façon synchrone.
{
using disposer = new DisposableStack();
const reader = disposer.use(stream.getReader());
const { value, done } = reader.read();
if (!done) {
// Traiter la valeur
}
// La méthode reader.releaseLock() est appelée ici avant de sortir
}
Spécifications
| Specification |
|---|
| ECMAScript Async Explicit Resource Management> # sec-disposablestack.prototype.use> |
Compatibilité des navigateurs
Voir aussi
- Gestion des ressources JavaScript
- L'objet
DisposableStack - La méthode
DisposableStack.prototype.adopt() - La méthode
DisposableStack.prototype.defer()