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
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
SuppressedErrorest créée, avec l'erreur originale dans la propriétésuppressedet 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.
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
- Gestion des ressources JavaScript
- L'objet
DisposableStack - La méthode
DisposableStack.prototype.adopt() - La méthode
DisposableStack.prototype.defer() - La méthode
DisposableStack.prototype.use() - La méthode
DisposableStack.prototype[Symbol.dispose]()