Symbol.asyncIterator

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

Symbol.asyncIterator は静的データプロパティで、ウェルノウンシンボルである Symbol.asyncIterator を表します。非同期反復可能プロトコルは、オブジェクトの非同期反復子を返すメソッドをこのシンボルで探します。オブジェクトが非同期反復可能であるためには、[Symbol.asyncIterator] キーを持つ必要があります。

試してみましょう

ウェルノウンシンボル Symbol.asyncIterator です。

Symbol.asyncIterator のプロパティ属性
書込可能不可
列挙可能不可
設定可能不可

ユーザー定義の非同期反復可能項目

オブジェクトに [Symbol.asyncIterator]() プロパティを設定することで、独自の非同期イテレーターを定義することができます。

js
const myAsyncIterable = {
  async *[Symbol.asyncIterator]() {
    yield "hello";
    yield "async";
    yield "iteration!";
  },
};

(async () => {
  for await (const x of myAsyncIterable) {
    console.log(x);
  }
})();
// 期待される出力:
// "hello"
// "async"
// "iteration!"

API を作成するとき、非同期反復可能項目はデータのストリームやリストのような、反復可能なものを表すために設計されたものであり、ほとんどの状況でコールバックやイベントを完全に置き換えるものではないことに注意してください。

組み込みの非同期反復可能オブジェクト

コア JavaScript 言語に非同期反復可能オブジェクトはありません。一部の Web API、例えば ReadableStream は既定で Symbol.asyncIterator メソッドが設定されています。

仕様書

Specification
ECMAScript Language Specification
# sec-symbol.asynciterator

ブラウザーの互換性

BCD tables only load in the browser

関連情報