m***@qq.com
m***@qq.com
  • 发布:2020-07-31 16:47
  • 更新:2020-07-31 16:47
  • 阅读:785

【报Bug】AsyncFunction 方法获取不到

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: SP1

HBuilderX类型: 正式

HBuilderX版本号: 2.8.2

手机系统: iOS

手机系统版本号: iOS 12.4

手机厂商: 苹果

手机机型: iphone6

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

运行下面的代码

const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;  
console.log(AsyncFunction);  
function resolveAfter2Seconds(x) {  
  return new Promise(resolve => {  
    setTimeout(() => {  
      resolve(x);  
    }, 2000);  
  });  
}  
var a = new AsyncFunction('a',   
                          'b',  
                          'return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);');  

a(10, 20).then(v => {  
  console.log(v); // 4 秒后打印 30  
});

预期结果:

// 4 秒后打印 30

实际结果:

new AsyncFunction() 的时候会报错:Uncaught SyntaxError: await is only valid in async function

bug描述:

我想在app中定义动态的异步方法,所以需要得到 AsyncFunction,通常在js中是这样写的:

const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;

这段代码在 app(ios)端运行的时候,得到的是 Function 而不是 AsyncFunction。不能用它来定义动态 async 方法。

2020-07-31 16:47 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复