AsyncFunction
AsyncFunction 构造函数用来创建新的 异步函数对象,JavaScript 中每个异步函数都是 AsyncFunction 的对象。
注意,AsyncFunction并不是一个全局对象,需要通过下面的方法来获取:
Object.getPrototypeOf(async function(){}).constructor语法
new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)参数
arg1, arg2, ... arg_N_Names to be used by the function as formal argument names. Each must be a string that corresponds to a valid JavaScript identifier or a list of such strings separated with a comma; for example "x", "theValue", or "a,b".functionBodyA string containing the JavaScript statements comprising the function definition.
描述
传递给 AsyncFunction 构造函数的所有参数,都会成为新函数中的变量,变量的名称和定义顺序与各参数相同。
调用 AsyncFunction构造函数时可以省略 new,其效果是一样的。
属性
AsyncFunction.lengthAsyncFunction构造函数的 length 属性,值为 1。AsyncFunction.prototype通过原型对象可以为所有异步函数对象定义额外的属性。
AsyncFunction 原型对象
属性
AsyncFunction.constructor默认值为AsyncFunction.AsyncFunction.prototype[@@toStringTag]Returns "AsyncFunction".
AsyncFunction 实例
AsyncFunction实例继承了AsyncFunction.prototype的方法和属性。和所有构造函数一样,修改 AsyncFunction 构造函数的原型对象会同时对所有 AsyncFunction 实例上生效。
示例
通过 AsyncFunction 构造器创建一个异步函数
function resolveAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
var AsyncFunction = Object.getPrototypeOf(async function(){}).constructor
var a = new AsyncFunction('a',
'b',
'return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);');
a(10, 20).then(v => {
console.log(v); // prints 30 after 4 seconds
});规范
Specification | Status | Comment |
|---|---|---|
ECMAScript Latest Draft (ECMA-262)The definition of 'AsyncFunction object' in that specification. | Draft | Initial definition in ES2017. |
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Edge | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
Basic support | 55 | 52.0 (52.0) | ? | ? | 42 | ? |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|
Basic support | ? | ? | 52.0 (52.0) | ? | 42 | ? | 55 |
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

