DisposableStack : méthode use() - JavaScript | MDN

Syntaxe

Paramètres

value

La valeur à enregistrer dans la pile. Elle doit soit contenir une méthode [Symbol.dispose](), soit être null ou undefined.

Valeur de retour

La même valeur value qui a été passée en argument.

Exceptions

TypeError

Levée si value n'est pas null ou undefined, 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.

js

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.

js

{
  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

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par les contributeurs du MDN.