Symbol.asyncIterator

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

説明

Symbol.asyncIterator シンボルは、オブジェクトの @@asyncIterator メソッドにアクセスするための組み込みシンボルです。オブジェクトを非同期で反復可能にするには、Symbol.asyncIterator キーが必要です。

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

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

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

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] が仕様に組み込まれました。

仕様

仕様書
ECMAScript (ECMA-262)
Symbol.asyncIterator の定義

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
asyncIteratorChrome 完全対応 63Edge 完全対応 79Firefox 完全対応 57IE 未対応 なしOpera 完全対応 50Safari 完全対応 11.1WebView Android 完全対応 63Chrome Android 完全対応 63Firefox Android 未対応 なしOpera Android 完全対応 46Safari iOS 未対応 なしSamsung Internet Android 完全対応 8.0nodejs 完全対応 10.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報