增强编译后如何判断原函数是否async函数?
发布于 7 年前 作者 baigang 8377 次浏览 来自 官方Issues

在一般开发中  我们可以这样判断一个函数是否是async函数

async function test() {
   return "test"
 }
 
 console.log(test.constructor.name)  //AsyncFunction

但是,在小程序中,打开了增强编译

async function test() {
  return "test"
}
 
console.log(test.constructor.name) //t

test.constructor.name 变成了 “t”  无法判断这个函数是否是async函数

编译后函数长这个样子:

ƒ test() {
  return _test.apply(this, arguments);
}

也就是增强编译后就无法判断原来的函数是否是async函数?

1 回复

async 是一种语法糖,部分手机环境是不支持 async 的,因此增强编译会把 async 编译转换成更通用的 es5 代码。因为一些手机浏览器环境是不支持 async 的

如果需要测试的手机换机是支持 async 的,可以不设置增强编译。

回到顶部