Symbol.asyncDispose
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Symbol.asyncDispose ã¯éçãã¼ã¿ããããã£ã§ãããã¦ã§ã«ãã¦ã³ã·ã³ãã«ã® Symbol.asyncDispose ã表ãã¾ãã await using 宣è¨ã¯ã夿°ã®åæååã«ããã¦ã夿°ãã¹ã³ã¼ãå¤ã«ãªã£ãéã«å¼ã³åºãã¡ã½ããã¨ãã¦ãã®ã·ã³ãã«ãæ¤ç´¢ãã¾ãã
å¤
ã¦ã§ã«ãã¦ã³ã·ã³ãã« Symbol.asyncDispose ã§ãã
Symbol.asyncDispose ã®ããããã£å±æ§ | |
|---|---|
| æ¸è¾¼å¯è½ | ä¸å¯ |
| åæå¯è½ | ä¸å¯ |
| è¨å®å¯è½ | ä¸å¯ |
解説
éåæã«ç ´æ£å¯è½ãª (async disposable) ãªãã¸ã§ã¯ãã¨ã¯ã [Symbol.asyncDispose]() ã¡ã½ãããåãããªãã¸ã§ã¯ãã§ãããã®ã¡ã½ããã¯ã以ä¸ã®ãããªã»ãã³ãã£ã¯ã¹ãæã¤ãã¨ãæå¾
ããã¾ãã
- ãã®ã¡ã½ãããå¼ã³åºããã¨ã§ãå¼ã³åºãå ããã®ãªãã¸ã§ã¯ãã®ä½¿ç¨ãç¶ç¶ããæå³ããªããã¨ããéåæã«ç ´æ£å¯è½ãªãªãã¸ã§ã¯ãã«ä¼ãã¾ãããã®ã¡ã½ããã¯ããã¡ã¤ã«ã·ã¹ãã ãã³ãã«ãã¹ããªã¼ã ããã¹ããªãã¸ã§ã¯ããªã©ããªã½ã¼ã¹ãæç¤ºçã«ã¯ãªã¼ã³ã¢ããããããã«å¿ è¦ãªãã¸ãã¯ãå®è¡ããå¿ è¦ãããã¾ãã
- ãã®ã¡ã½ããã¯ãããã¹ãè¿ããã¨ãããããã®ãããã¹ãå¾ ã£ã¦ããå¦çãç¶è¡ãã¾ãã
- ãã®ã¡ã½ããã§ä¾å¤ãçºçããå ´åãé常ã¯ãªã½ã¼ã¹ãè§£æ¾ã§ããªãã£ããã¨ãæå³ãã¾ããéåæã«ç ´æ£å¯è½ãªãªãã¸ã§ã¯ãã¯ãè¿ããã Promise ãå±¥è¡ãããã¾ã§ãç ´æ£ããããã¨ã¯ã¿ãªããã¾ããã
- åããªãã¸ã§ã¯ãã«ãã㦠2 å以ä¸å¼ã³åºãããå ´åã«ãã¡ã½ããã¯ä¾å¤ãçºçãããã¹ãã§ã¯ããã¾ããããã ãããã®è¦ä»¶ã¯å¼·å¶ã§ã¯ããã¾ããã
ä¾
>ã¦ã¼ã¶ã¼å®ç¾©ã®éåæã«ç ´æ£å¯è½ãªãªãã¸ã§ã¯ã
[Symbol.dispose] ã«ãããç¬èªã®éåæã«ç ´æ£å¯è½ãªãªãã¸ã§ã¯ãã使ã§ãã¾ãã詳細ã«ã¤ãã¦ã¯ãawait using ãåç
§ãã¦ãã ããã
class Disposable {
#fileHandle;
#disposed;
constructor(handle) {
this.#disposed = false;
this.#fileHandle = handle;
}
async [Symbol.asyncDispose]() {
await this.#fileHandle.close();
this.disposed = true;
}
get isDisposed() {
return this.disposed;
}
}
const resource = new Disposable(await fs.open("my-file.txt", "r"));
{
await using resourceUsed = resource;
console.log(resource.isDisposed); // false
}
console.log(resource.isDisposed); // true
仿§æ¸
| Specification |
|---|
| ECMAScript Async Explicit Resource Management> # table-1> |