このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

AsyncGeneratorFunction

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2020年1月以降、すべてのブラウザーで利用可能です。

AsyncGeneratorFunction オブジェクトは、非同期ジェネレーター関数のメソッドを提供します。 JavaScript では、すべての非同期ジェネレータ関数は実際には AsyncGeneratorFunction オブジェクトです。

なお、AsyncGeneratorFunction はグローバルオブジェクトではありません。以下のコードで取得できます。

js
const AsyncGeneratorFunction = async function* () {}.constructor;

AsyncGeneratorFunctionFunction のサブクラスです。

試してみましょう

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 インスタンスが自身で持つプロパティです。

prototype

関数が new 演算子と共にコンストラクターとして使用される場合に使用されます。新しいオブジェクトのプロトタイプとなります。

インスタンスメソッド

親である Function からインスタンスメソッドを継承しています

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-asyncgeneratorfunction-objects

ブラウザーの互換性

関連情報