[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/DisposableStack [Back]  [Original]

DisposableStack - JavaScript | MDN

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

Disponibilit limite

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

Vous voulez une meilleure prise en charge pour cette fonctionnalit ? Dites-nous pourquoi.

L'objet DisposableStack reprsente une pile de librateurs (disposals en anglais) excuter lorsque la pile elle-mme est libre (disposed en anglais). Les fonctions de libration sont excutes dans l'ordre inverse de leur enregistrement, avec de solides garanties de gestion des erreurs. L'appel de sa mthode move() transfre la responsabilit d'appeler les fonctions de libration actuellement enregistres vers une nouvelle DisposableStack et empche l'enregistrement de fonctions de libration supplmentaires.

Dans cet article

Description

Un DisposableStack n'est pas exactement une  pile  au sens de son interface. Il dispose de plusieurs mthodes pour y empiler des fonctions de libration, mais il n'offre aucun moyen de dpiler une seule fonction. En revanche, toutes les fonctions de libration sont dpiles et excutes une par une lorsque la pile est libre.

Vous enregistrez des ressources librables dans le DisposableStack en utilisant ses mthodes use(), adopt() ou defer().

js
using disposer = new DisposableStack();
const reader = disposer.use(stream.getReader());

Ensuite, lorsque le disposer sort de la porte, toutes les ressources qui y sont enregistres sont libres dans l'ordre inverse de leur enregistrement, sauf si elles ont t dplaces avec move().

Il est recommand de ne pas extraire l'expression d'acquisition de la ressource dans une instruction spare, quelle que soit la longueur de l'expression. Vous devez toujours entourer l'appel avec use() ou adopt() autour de l'expression d'acquisition afin de garantir que la ressource est immdiatement enregistre dans la pile.

js
using disposer = new DisposableStack();
const reader = stream.getReader();
disposer.use(reader);

D'un point de vue fonctionnel, ces deux extraits de code sont quivalents. Cependant, le premier est moins sujet aux erreurs, car la ressource est dclare et enregistre sur une seule ligne. Si quelqu'un insre davantage de code entre la deuxime et la troisime ligne du second extrait, une erreur peut survenir, provoquant une fuite de la ressource.

Constructeur

DisposableStack()

Cre un nouvel objet DisposableStack.

Proprits d'instance

Ces proprits sont dfinies sur DisposableStack.prototype et partages par toutes les instances de DisposableStack.

DisposableStack.prototype.constructor

La fonction constructeur ayant cr l'objet instance. Pour les instances de DisposableStack, la valeur initiale est le constructeur DisposableStack.

DisposableStack.prototype.disposed Lecture seule

Retourne true si la DisposableStack a t libre, sinon false.

DisposableStack.prototype[Symbol.toStringTag]

La valeur initiale de la proprit [Symbol.toStringTag] est la chane de caractres "DisposableStack". Cette proprit est utilise par Object.prototype.toString().

Mthodes d'instance

DisposableStack.prototype.adopt()

Enregistre une valeur qui n'implmente pas le protocole de libration dans la pile en fournissant une fonction de libration personnalise.

DisposableStack.prototype.defer()

Prend une fonction de rappel appeler lorsque la pile est libre.

DisposableStack.prototype.dispose()

Libre cette pile en appelant toutes les fonctions de libration qui y sont enregistres dans l'ordre inverse de leur enregistrement.

DisposableStack.prototype.move()

Cre une nouvelle instance de DisposableStack contenant les mmes fonctions de libration que cette pile, puis marque cette pile comme libre, sans appeler aucune fonction de libration.

DisposableStack.prototype.use()

Enregistre une valeur qui implmente le protocole de libration dans la pile.

DisposableStack.prototype[Symbol.dispose]

Un alias de la mthode dispose().

Spcifications

Spcification
ECMAScript Async Explicit Resource Management
# sec-disposablestack-objects

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page