Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

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

js
use(value)

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