Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2020年1月以降、すべてのブラウザーで利用可能です。
AsyncGenerator オブジェクトは非同期ジェネレーター関数から返されるもので、非同期反復可能プロトコルと非同期イテレータープロトコルの両方を満たすものです。
非同期ジェネレーターメソッドは、常に Promise オブジェクトを生成します。
AsyncGenerator は隠しクラスの AsyncIterator のサブクラスです。
AsyncGenerator コンストラクターはグローバルには利用できません。AsyncGenerator のインスタンスは、非同期ジェネレーター関数から返される必要があります。
実際、AsyncGeneratorコンストラクターに対応するJavaScriptのエンティティはありません。非同期ジェネレーター関数によって生成されるすべてのオブジェクトによって共有されるプロトタイプオブジェクトである隠しオブジェクトがあるだけです。このオブジェクトはクラスのように見せるために AsyncGenerator.prototype というスタイルで呼ばれることが多いのですが、AsyncGeneratorFunction.prototype.prototype と呼ぶほうが適切でしょう。なぜなら AsyncGeneratorFunction は実際の JavaScript エンティティであるからです。
これらのプロパティは AsyncGenerator.prototype で定義されており、すべての AsyncGenerator インスタンスで共有されています。
AsyncGenerator.prototype.constructorインスタンスオブジェクトを作成したコンストラクター関数。AsyncGenerator インスタンスの場合、初期値は AsyncGeneratorFunction.prototype です。
メモ: AsyncGenerator は生成した非同期ジェネレーター関数を格納しているわけではありません。
@@toStringTag プロパティの初期値は、文字列 "AsyncGenerator" です。このプロパティは Object.prototype.toString() で使用されます。
親である AsyncIterator からインスタンスメソッドを継承しています。
AsyncGenerator.prototype.next()Promise を返します。これは、yield 式で返された指定された値で解決されます。
AsyncGenerator.prototype.return()ジェネレータ本体に現在の停止位置に return 文を挿入したかのように動作します。try...finally ブロックと組み合わせるとジェネレーターを終了し、クリーンアップタスクを実行することができます。
AsyncGenerator.prototype.throw()ジェネレーター本体の現在の停止位置に throw 文が挿入されたかのように動作します。これは、ジェネレーターにエラー状態を通知し、エラーを処理するか、クリーンアップを実行して自身を終了させることができます。
次の例では、非同期ジェネレーターを反復処理し、時間間隔が短くなるごとに 1~6 の値をコンソールに出力しています。時刻が変わるたびにプロミスが生成されますが、それは for await...of ループの中で自動的に解決されることに注意してください。
| ECMAScript® 2027 Language Specification # sec-asyncgenerator-objects |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。