AsyncFunction() 构造函数

AsyncFunction() 构造函数创建一个新的 AsyncFunction 对象。在 JavaScript 中,每个异步函数实际上都是一个 AsyncFunction 对象。

注意,AsyncFunction 不是全局对象。它可以通过以下代码获取:

js

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

AsyncFunction() 构造函数不能直接使用,并且所有在 Function() 描述中提到的注意事项都适用于 AsyncFunction

语法

js

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)

备注: 无论是否使用 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 Language Specification
# sec-async-function-constructor

浏览器兼容性

BCD tables only load in the browser

参见