AsyncFunction构造函数

AsyncFunction 构造函数用来创建新的 异步函数 对象,JavaScript 中每个异步函数实际上都是 AsyncFunction 的对象。(The AsyncFunction constructor creates a new async function object. In JavaScript every asynchronous function is actually an AsyncFunction object.)

注意:AsyncFunction 并不是一个全局对象,需要通过下面的方法来获取:

Object.getPrototypeOf(async function(){}).constructor

语法

new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)

参数

  • arg1, arg2, … argN。函数的参数名,它们是符合 JavaScript 标示符规范的一个或多个用逗号隔开的字符串。例如
    x、theValue、或 a,b。
  • functionBody:一段字符串形式的 JavaScript 语句,这些语句组成了新函数的定义。

使用AsyncFuncFunction构造函数创建的 异步函数对象 在创建函数时被解析。这比用异步函数表达式( async function expression)声明异步函数并在代码中调用它效率更低,因为这些函数将与代码的其余部分进行解析。

传递给函数的所有参数都被当作 要创建的函数中 参数的标识符的名称。

调用 AsyncFunction 构造函数时可以省略 new,其效果是一样的。(Invoking the AsyncFunction constructor as a function (without using the new operator) has the same effect as invoking it as a constructor.)

属性

AsyncFunction.length:AsyncFunction 构造函数的 length 属性,值为 1。
AsyncFunction.prototype:通过原型对象可以为所有异步函数对象定义额外的属性。

AsyncFunction 原型对象

AsyncFunction.constructor:默认值为 AsyncFunction。
AsyncFunction.prototype[@@toStringTag]:返回 “AsyncFunction”。

AsyncFunction 实例

AsyncFunction实例从AsyncFunction.prototype继承方法和属性。与所有构造函数一样,可以更改构造函数的原型对象,以对所有AsyncFunction实例进行更改。

举例:通过 AsyncFunction 构造器创建一个异步函数

function resolveFun(x) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(x);
        }, 2000);
    })
}

let AsyncFunc = Object.getPrototypeOf(async function () { }).constructor;

let a = new AsyncFunc('a', 'b', 'return await resolveFun(a) + await resolveFun(b)');

a('happy', 'chen').then(v => {
    console.log(v);
})

//happychen
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值