Symbol.asyncIterator

Symbol.asyncIterator は、オブジェクトのデフォルトの AsyncIterator を指定します。このプロパティがオブジェクトに設定されている場合、それは非同期反復可能項目であり、for await...of ループで使用できます。

試してみましょう

説明

Symbol.asyncIterator シンボルは、オブジェクトの @@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 を作成するとき、非同期反復可能項目はデータのストリームやリストのような、反復可能なものを表すために設計されたものであり、ほとんどの状況でコールバックやイベントを完全に置き換えるものではないことに注意してください。

組み込みの非同期反復処理

現在のところ、デフォルトで [Symbol.asyncIterator] キーが設定されている組み込み JavaScript オブジェクトはありません。しかし、WHATWG Streams は非同期反復可能な最初の組み込みオブジェクトになるように設定されており、最近 [Symbol.asyncIterator] が仕様に組み込まれました。

仕様

Specification
ECMAScript Language Specification
# sec-symbol.asynciterator

ブラウザー実装状況

BCD tables only load in the browser

関連情報