このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

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 と共に使用された際に破棄することができます。存在する場合、thisreturn() メソッドを呼び出します。

構文

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

ブラウザーの互換性

関連情報