Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 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 |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年7月22日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.