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

View in English Always switch to English

AsyncFunction() 构造函数

基线 广泛可用

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

规范

规范
ECMAScript® 2027 Language Specification
# sec-async-function-constructor

浏览器兼容性

参见