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

View in English Always switch to English

AsyncFunction() コンストラクター

Baseline 広く利用可能

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

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

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

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

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

構文

js
new AsyncFunction(functionBody)
new AsyncFunction(arg1, functionBody)
new AsyncFunction(arg1, arg2, functionBody)
new AsyncFunction(arg1, arg2, /* …, */ argN, functionBody)

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

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

引数

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

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

js
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
});

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-async-function-constructor

ブラウザーの互換性

関連情報