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…