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 dispose()

Limited availability

Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.

La méthode dispose() des instances de DisposableStack libère cette pile en appelant tous les gestionnaires de libération enregistrés dans l'ordre inverse de leur enregistrement. Si la pile est déjà libérée, cette méthode ne fait rien.

Elle effectue la même action que using disposer = new DisposableStack() à la sortie de la portée. Elle peut être utilisée si vous devez effectuer le nettoyage à un autre moment que la sortie de portée.

Syntaxe

js
dispose()

Paramètres

Aucun.

Valeur de retour

Aucune (undefined).

Exceptions

SuppressedError

Levée si plusieurs gestionnaires de libération dans la pile ont levé une erreur. Si une seule erreur est levée, elle est relancée telle quelle. Sinon, pour chaque erreur supplémentaire, une nouvelle SuppressedError est créée, avec l'erreur originale dans la propriété suppressed et la nouvelle erreur dans la propriété error.

Exemples

Libérer une pile

Ici, nous ajoutons trois gestionnaires de libération à la pile, en utilisant les méthodes use(), adopt() et defer(). Lorsque dispose() est appelée, les gestionnaires sont appelés dans l'ordre inverse de leur enregistrement.

Notez que généralement, vous n'avez pas besoin d'appeler dispose() manuellement. Déclarez la pile avec using, et sa méthode [Symbol.dispose]() sera automatiquement appelée lorsque la pile sort de la portée.

js
class Resource {
  dispose() {
    console.log("Ressource libérée");
  }
  [Symbol.dispose]() {
    console.log("Ressource libérée par Symbol.dispose");
  }
}

{
  const disposer = new DisposableStack();
  const resource = disposer.use(new Resource());
  const resource2 = disposer.adopt(new Resource(), (resource) =>
    resource.dispose(),
  );
  disposer.defer(() => console.log("Libération différée"));
  disposer.dispose();
  // Affiche dans l'ordre :
  // Libération différée
  // Ressource libérée
  // Ressource libérée par Symbol.dispose
}

Spécifications

Specification
ECMAScript Async Explicit Resource Management
# sec-disposablestack.prototype.dispose

Compatibilité des navigateurs

Voir aussi