AsyncIterator.prototype[Symbol.asyncDispose]()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
AsyncIterator インスタンスの [Symbol.asyncDispose]() メソッドは、非同期破棄プロトコル を実装しており、await using とともに使用したときに、そのインスタンスを破棄できるようにします。このメソッドは、this の return() メソッドが存在する場合、それを呼び出してその結果を待機します。
構文
js
asyncIterator[Symbol.asyncDispose]()
引数
なし。
返値
なし (undefined)。
例
>await using を用いた非同期イテレーターの宣言
Symbol.asyncDispose メソッドは、await using 宣言内で自動的に呼び出されることを想定しています。これは、next() メソッドを呼び出して手動で反復処理を行う非同期イテレーターがある場合に便利です。for await...of などで反復処理を行う場合は、エラー処理やクリーンアップは自動的に行われます。
js
async function* generateNumbers() {
try {
yield 1;
yield 2;
yield 3;
} finally {
console.log("Cleaning up");
}
}
async function doSomething() {
await using numbers = generateNumbers();
const res1 = await numbers.next();
// 残りの値は反復処理していません
// 関数の終了前に、この非同期イテレーターは破棄されます
// 「Cleaning up」とログに出力されます
}
doSomething();
仕様書
| Specification |
|---|
| ECMAScript Async Explicit Resource Management> # sec-asyncdisposablestack.prototype-@@asyncDispose> |