AsyncDisposableStack.prototype.disposeAsync()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
AsyncDisposableStack ã¤ã³ã¹ã¿ã³ã¹ã® disposeAsync() ã¡ã½ããã¯ãç»é²ããã¦ãããã¹ã¦ã®ãã£ã¹ãã¼ã¶ã¼ãç»é²é ã¨ã¯éã®é åºã§å¼ã³åºããåãã£ã¹ãã¼ã¶ã¼ã®å®äºãå¾
ã£ã¦ããæ¬¡ã®ãã£ã¹ãã¼ã¶ã¼ãå¼ã³åºããã¨ã§ããã®ã¹ã¿ãã¯ãç ´æ£ãã¾ããã¹ã¿ãã¯ããã§ã«è§£æ¾ããã¦ããå ´åããã®ã¡ã½ããã¯ä½ãè¡ãã¾ããã
ããã¯ãã¹ã³ã¼ãçµäºæã« await using disposer = new AsyncDisposableStack() ã¨åãå¦çãå®è¡ãã¾ããã¹ã³ã¼ãçµäºæä»¥å¤ã®å ´æã§ã¯ãªã¼ã³ã¢ãããå¿
è¦ãªå ´åã«ä½¿ç¨ã§ãã¾ãã
æ§æ
disposeAsync()
弿°
ãªãã
è¿å¤
ç»é²ããã¦ãããã¹ã¦ã®ãã£ã¹ãã¼ã¶ã¼ãé çªã«å®äºããã¨ãã«ãundefined ã§è§£æ±ºãããæ°ãã Promiseã
ä¾å¤
disposeAsync() ã¯åæçã«ã¨ã©ã¼ãã¹ãã¼ãããã¨ã¯ããã¾ãããè¿ããããããã¹ã¯ã次ã®ããããã®ã¨ã©ã¼ã§æå¦ãããå¯è½æ§ãããã¾ãã
SuppressedError-
ã¹ã¿ãã¯å ã®è¤æ°ã®ãã£ã¹ãã¼ã¶ã¼ãã¨ã©ã¼ãã¹ãã¼ããå ´åã«çºçãã¾ãã ã¨ã©ã¼ã 1 ã¤ã ãã®å ´åã¯ããã®ã¨ã©ã¼ããã®ã¾ã¾åã¹ãã¼ããã¾ãã追å ã®ã¨ã©ã¼ãã¨ã«æ°ãã
SuppressedErrorã使ãããå ã®ã¨ã©ã¼ã¯suppressedããããã£ã«ãæ°ããã¨ã©ã¼ã¯errorããããã£ã«è¨å®ããã¾ãã
ä¾
>ã¹ã¿ãã¯ã®ç ´æ£
ããã§ã¯ãuse()ãadopt()ãdefer() ã¡ã½ããã使ã£ã¦ã3 ã¤ã®ãã£ã¹ãã¼ã¶ã¼ãã¹ã¿ãã¯ã«è¿½å ãã¾ããdisposeAsync() ãå¼ã³åºãã¨ããã£ã¹ãã¼ã¶ã¼ã¯ç»é²ããé åºã¨ã¯éã®é åºã§å¼ã³åºããã¾ãã
é常ãdisposeAsync() ãæåã§å¼ã³åºãå¿
è¦ã¯ããã¾ãããã¹ã¿ãã¯ã await using ã§å®£è¨ããã¨ãã¹ã³ã¼ããæããã¨ãã« [Symbol.asyncDispose]() ã¡ã½ãããèªåçã«å¼ã³åºããã¾ãã
class Resource {
#doDisposal() {
// ããã§ã¯ãããå®ç¨çãªè§£æ¾å¦çãè¡ãããã¨æ³å®ãã¦ãã ãã
return new Promise((resolve) => {
setTimeout(resolve, 1000);
});
}
async dispose() {
await this.#doDisposal();
console.log("Resource disposed");
}
async [Symbol.asyncDispose]() {
await this.#doDisposal();
console.log("Resource disposed via Symbol.asyncDispose");
}
}
async function doSomething() {
const disposer = new AsyncDisposableStack();
const resource = disposer.use(new Resource());
const resource2 = disposer.adopt(new Resource(), (resource) =>
resource.dispose(),
);
disposer.defer(() => console.log("Deferred disposer"));
disposer.disposeAsync();
// 次ã®é åºã§ãã°åºåããã¾ã:
// Deferred disposer
// Resource disposed
// Resource disposed via Symbol.dispose
}
doSomething();
仿§æ¸
| Specification |
|---|
| ECMAScript Async Explicit Resource Management> # sec-asyncdisposablestack.prototype.disposeAsync> |