此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

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)

备注: 无论是否使用 new 调用 AsyncFunction(),都可以创建一个新的 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); // 4 秒过后,输出 30
});

规范

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

浏览器兼容性

参见