DisposableStack
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
DisposableStack ãªãã¸ã§ã¯ãã¯ããã£ã¹ãã¼ã¶ã¼ã®ã¹ã¿ãã¯ã表ãã¾ããã¹ã¿ãã¯ã«ç»é²ãããã£ã¹ãã¼ã¶ã¼ã¯ãã¹ã¿ãã¯èªä½ãç ´æ£ãããæã«å®è¡ããã¾ãããã£ã¹ãã¼ã¶ã¼ã®é¢æ°ã¯ãå¼·åãªã¨ã©ã¼ãã³ããªã³ã°ã«ããä¿è¨¼ã®å
ãç»é²ããé çªã¨ã¯éã®é çªã§å®è¡ããã¾ãããã£ã¹ãã¼ã¶ã¼ã® move() ã¡ã½ãããå¼ã³åºãã¨ãç¾å¨ç»é²ãã¦ãããã£ã¹ãã¼ã¶ã¼ãæ°ãã DisposableStack ã«å¼ã³åºã責任ãç§»è²ãã追å ã®ãã£ã¹ãã¼ã¶ã¼ã®ç»é²ã鲿¢ãã¾ãã
解説
DisposableStack ã¯ããã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®è¦³ç¹ããè¦ãã¨ãå³å¯ã«ã¯ãã¹ã¿ãã¯ãã§ã¯ããã¾ããããã£ã¹ãã¼ã¶ã¼ãã¹ã¿ãã¯ã«ããã·ã¥ããããã®ã¡ã½ããã¯ããã¤ãããã¾ããããã£ã¹ãã¼ã¶ã¼ãä¸ã¤ãããããæ¹æ³ã¯ããã¾ãããããã©ããããã¹ã¿ãã¯ãç ´æ£ãããã¨ãã« ãã¹ã¦ã® ãã£ã¹ãã¼ã¶ã¼ãä¸ã¤ãã¤ãããããã¦å®è¡ããã¾ãã
DisposableStackã«ç ´æ£å¯è½ãªãªã½ã¼ã¹ãç»é²ããã«ã¯ãuse()ãadopt()ãã¾ãã¯defer()ã¡ã½ããã使ç¨ãã¾ãã
using disposer = new DisposableStack();
const reader = disposer.use(stream.getReader());
ãã㦠disposer ãã¹ã³ã¼ãå¤ã«ãªãã¨ãmove() ã§ç§»åããã¦ããªãéããç»é²ããããã¹ã¦ã®ãªã½ã¼ã¹ãç»é²ã®éé ã§ç ´æ£ããã¾ãã
ãªã½ã¼ã¹ãåå¾ããå¼ãã©ãã»ã©é·ãã¦ããå¥ã®æã« åãåºããªã ãã¨ãè¯ãç¿æ
£ã§ããuse() ã¾ã㯠adopt() ã®å¼ã³åºãã§ãªã½ã¼ã¹ãåå¾ããå¼ã常ã«ã©ãããã¦ããªã½ã¼ã¹ãç´ã¡ã«ã¹ã¿ãã¯ã«ç»é²ããããã¨ãä¿è¨¼ããå¿
è¦ãããã¾ãã
using disposer = new DisposableStack();
const reader = stream.getReader();
disposer.use(reader);
ãããäºã¤ã®ã³ã¼ãã¹ããããã¯æ©è½çã«ã¯åçã§ããããããæåã®æ¹ããªã½ã¼ã¹ãä¸è¡ã§å®£è¨ããç»é²ããããããã¨ã©ã¼ãèµ·ããã«ããã§ãããã誰ããäºçªç®ã®ã¹ããããã«ããã¦äºè¡ç®ã¨ä¸è¡ç®ã®éã«ããã«ã³ã¼ãã追å ããå ´åãã¨ã©ã¼ãçºçããªã½ã¼ã¹ããªã¼ã¯ããå¯è½æ§ãããã¾ãã
ã³ã³ã¹ãã©ã¯ã¿ã¼
DisposableStack()-
æ°ãã
DisposableStackãªãã¸ã§ã¯ãã使ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ããããã£
ãããã®ããããã£ã¯ DisposableStack.prototype ã§å®ç¾©ããã¦ããããã¹ã¦ã® DisposableStack ã¤ã³ã¹ã¿ã³ã¹ã§å ±æããã¾ãã
DisposableStack.prototype.constructor-
ã¤ã³ã¹ã¿ã³ã¹ãªãã¸ã§ã¯ãã使ããã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ã
DisposableStackã¤ã³ã¹ã¿ã³ã¹ã®å ´åãåæå¤ã¯DisposableStackã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã DisposableStack.prototype.disposed-
èªã¿åãå°ç¨ã
DisposableStackãç ´æ£ããã¦ããå ´åã¯trueãããã§ãªãå ´åã¯falseãè¿ãã¾ãã DisposableStack.prototype[Symbol.toStringTag]-
[Symbol.toStringTag]ããããã£ã®åæå¤ã¯æåå"DisposableStack"ã§ãããã®ããããã£ã¯Object.prototype.toString()ã§ä½¿ç¨ããã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
DisposableStack.prototype.adopt()-
ã¹ã¿ãã¯ã«ç ´æ£å¯è½ãããã³ã«ãå®è£ ãã¦ããªãå¤ããã«ã¹ã¿ã ã®ãã£ã¹ãã¼ã¶ã¼é¢æ°ãæä¾ãããã¨ã§ç»é²ãã¾ãã
DisposableStack.prototype.defer()-
ã¹ã¿ãã¯ãç ´æ£ãããã¨ãã«å¼ã³åºããããã³ã¼ã«ããã¯é¢æ°ãåãåãã¾ãã
DisposableStack.prototype.dispose()-
ç»é²ãããé çªã¨ã¯éã®é çªã§ãã¹ã¿ãã¯ã«ç»é²ããããã¹ã¦ã®ãã£ã¹ãã¼ã¶ã¼ãå¼ã³åºããã¹ã¿ãã¯ãç ´æ£ãã¾ãã
DisposableStack.prototype.move()-
ã¹ã¿ãã¯å ã«åããã£ã¹ãã¼ã¶ã¼ãå«ãæ°ãã
DisposableStackã¤ã³ã¹ã¿ã³ã¹ã使ãããã£ã¹ãã¼ã¶ã¼ãã¾ã£ããå¼ã³åºããã¨ãªãã¹ã¿ãã¯ãç ´æ£æ¸ã¿ã¨ãã¦ãã¼ã¯ãã¾ãã DisposableStack.prototype.use()-
ç ´æ£å¯è½ãããã³ã«ãå®è£ ãã¦ããå¤ãã¹ã¿ãã¯ã«ç»é²ãã¾ãã
DisposableStack.prototype[Symbol.dispose]-
dispose()ã¡ã½ããã®ã¨ã¤ãªã¢ã¹ã
仿§æ¸
| Specification |
|---|
| ECMAScript Async Explicit Resource Management> # sec-disposablestack-objects> |