Skip to content

判断函数是否标记了 async

js
function af() {}
async function bf() {}

af.__proto__
ƒ () { [native code] }
bf.__proto__
AsyncFunction {Symbol(Symbol.toStringTag): 'AsyncFunction'}

可以发现二者原型不同,于是尝试 bf.constructor === AsyncFunction。但是报错:

VM5521:1 Uncaught ReferenceError: AsyncFunction is not defined
    at <anonymous>:1:20

因为 AsyncFunction 没有暴露给 js。

发现 Symbol(Symbol.toStringTag): "AsyncFunction",所以

js
Object.prototype.toString.call(bf) === '[object AsyncFunction]'
> true

bf[Symbol.toStringTag] === 'AsyncFunction'
> true

© thebestxt.cc
辽ICP备16009524号-8
本站所有文章版权所有,转载请注明出处