AsyncFunction() コンストラクター

AsyncFunction() コンストラクターは AsyncFunction オブジェクトを生成します。

なお、AsyncFunction はグローバルオブジェクトではないことに注意してください。これは以下のようなコードで取得することができます。

const AsyncFunction = async function () {}.constructor;

AsyncFunction() コンストラクターは直接使用することを意図されておらず、 Function() の説明で述べた注意事項はすべて AsyncFunction() に適用されます。

構文

new AsyncFunction(functionBody)
new AsyncFunction(arg0, functionBody)
new AsyncFunction(arg0, arg1, functionBody)
new AsyncFunction(arg0, arg1, /* … ,*/ argN, functionBody)

AsyncFunction(functionBody)
AsyncFunction(arg0, functionBody)
AsyncFunction(arg0, arg1, functionBody)
AsyncFunction(arg0, arg1, /* … ,*/ argN, functionBody)

メモ: AsyncFunction()new があってもなくても呼び出すことができます。どちらも新しい AsyncFunction インスタンスを生成します。

引数

Function() を参照してください。

AsyncFunction() コンストラクターから非同期関数を生成

function resolveAfter2Seconds(x) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

const AsyncFunction = async function () {}.constructor;

const fn = new AsyncFunction(
  "a",
  "b",
  "return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);",
);

fn(10, 20).then((v) => {
  console.log(v); // prints 30 after 4 seconds
});

仕様書

Specification
ECMAScript Language Specification
# sec-async-function-constructor

ブラウザーの互換性

BCD tables only load in the browser

関連情報