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