HarmonyOS ArkTS是否支持顶层await语句?

在自定义类文件(ets)中,创建了一个工具类,导出对象时需要调用异步方法,编辑器提示:

"Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set to 'es2017' or higher. "  

是需要修改项目配置,还是需要换一种写法?代码示意如下:

// A.ets
class A {
  async static create():A{ ....}
}
const A_Instance:A = await A.create()
export default A_Instance
阅读 585
1 个回答

async关键字是用来声明一个函数为异步函数,并使用await关键字等待Promise的解析,需要换种写法,写法如下:

// A.ets
class A {
  static create(): A | PromiseLike<A> {
    throw new Error('Method not implemented.')
  }
  async  create(){}
}

async function myAsyncFunction(){
  const A_Instance=  await A.create();
  return A_Instance
}
export default myAsyncFunction;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进