AsyncFunction() 构造函数
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.
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® 2025 Language Specification # sec-async-function-constructor |
浏览器兼容性
BCD tables only load in the browser