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

View in English Always switch to English

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 とともに使用したときに、そのインスタンスを破棄できるようにします。このメソッドは、thisreturn() メソッドが存在する場合、それを呼び出してその結果を待機します。

構文

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

ブラウザーの互換性

関連情報