AsyncGeneratorFunction
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
AsyncGeneratorFunction オブジェクトは、非同期ジェネレータ関数 のメソッドを提供します。 JavaScript で、すべての非同期ジェネレータ関数は実際には AsyncGeneratorFunction オブジェクトです。
なお、AsyncGeneratorFunction はグローバルオブジェクトではありません。以下のコードで取得できます。
const AsyncGeneratorFunction = async function* () {}.constructor;
AsyncGeneratorFunction は Function のサブクラスです。
試してみましょう
const AsyncGeneratorFunction = async function* () {}.constructor;
const foo = new AsyncGeneratorFunction(`
yield await Promise.resolve('a');
yield await Promise.resolve('b');
yield await Promise.resolve('c');
`);
let str = "";
async function generate() {
for await (const val of foo()) {
str = str + val;
}
console.log(str);
}
generate();
// Expected output: "abc"
コンストラクター
AsyncGeneratorFunction()-
新しい
AsyncGeneratorFunctionオブジェクトを生成します。
インスタンスプロパティ
親である Function から継承したインスタンスプロパティもあります。
これらのプロパティは AsyncGeneratorFunction.prototype で定義されており、すべての AsyncGeneratorFunction インスタンスで共有されます。
AsyncGeneratorFunction.prototype.constructor-
このインスタンスオブジェクトを生成したコンストラクター関数です。
AsyncGeneratorFunctionインスタンスにおいては、初期値はAsyncGeneratorFunctionコンストラクターです。 AsyncGeneratorFunction.prototype.prototype-
すべての非同期ジェネレータ関数は同じ
prototypeプロパティを共有していて、それはAsyncGenerator.prototypeです。それぞれの非同期ジェネレーター関数のインスタンスは自分自身でprototypeプロパティも持ちます。非同期ジェネレーター関数が呼び出されると、返される非同期ジェネレーターオブジェクトは非同期ジェネレーター関数のprototypeプロパティを継承し、そのプロパティはAsyncGeneratorFunction.prototypeを継承します。 AsyncGeneratorFunction.prototype[Symbol.toStringTag]-
@@toStringTagプロパティの初期値は文字列"AsyncGeneratorFunction"です。このプロパティはObject.prototype.toString()で使用します。
インスタンスメソッド
親である Function からインスタンスメソッドを継承しています。
仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification # sec-asyncgeneratorfunction-objects |