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