AsyncGeneratorFunction
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2020年1月.
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 += val;
}
console.log(str);
}
generate();
// 予想される結果: "abc"
コンストラクター
AsyncGeneratorFunction()-
新しい
AsyncGeneratorFunctionオブジェクトを生成します。
インスタンスプロパティ
親である Function から継承したインスタンスプロパティもあります。
これらのプロパティは AsyncGeneratorFunction.prototype で定義されており、すべての AsyncGeneratorFunction インスタンスで共有されます。
AsyncGeneratorFunction.prototype.constructor-
このインスタンスオブジェクトを生成したコンストラクター関数です。
AsyncGeneratorFunctionインスタンスにおいては、初期値はAsyncGeneratorFunctionコンストラクターです。 AsyncGeneratorFunction.prototype.prototype-
すべての非同期ジェネレータ関数は同じ
prototypeプロパティを共有していて、それはAsyncGenerator.prototypeです。async function*構文またはAsyncGeneratorFunction()コンストラクターで生成されるそれぞれの非同期ジェネレーター関数も、自身のprototypeプロパティを保持します。このプロパティのプロトタイプはAsyncGeneratorFunction.prototype.prototypeです。非同期ジェネレーター関数が呼び出されると、そのprototypeプロパティは返される非同期ジェネレーターオブジェクトのプロトタイプとなります。 AsyncGeneratorFunction.prototype[Symbol.toStringTag]-
[Symbol.toStringTag]プロパティの初期値は文字列"AsyncGeneratorFunction"です。このプロパティはObject.prototype.toString()で使用します。
以下のプロパティは、それぞれの AsyncGeneratorFunction インスタンスが自身で持つプロパティです。
インスタンスメソッド
親である Function からインスタンスメソッドを継承しています。
仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-asyncgeneratorfunction-objects> |
ブラウザーの互換性
Loading…