AsyncFunction() コンストラクター
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 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
});
仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-async-function-constructor> |