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