0%
判断函数是否标记了 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