【问题标题】:How can I use async/await in a es6 javascript class?如何在 es6 javascript 类中使用 async/await?
【发布时间】:2016-04-26 22:00:18
【问题描述】:

所以我正在尝试为我制作的异步类创建一个函数,但是 webpack 在编译该类时给了我一个错误。

我的代码是这样的:

class MyClass {

   constructor(apiService) {
       this._apiService = apiService;
   }

   async updateInformation() {
       await this._apiService.updateInformation();
       // .. do more stuff I have to do 
   }
}

webpack 给我的错误是:

Module build failed: SyntaxError: Unexpected token

(Unexpected token 在异步后指向 'u')

【问题讨论】:

  • 您的捆绑/转译器设置是什么? babel6、webpack...
  • async/await 不是 ES6 的一部分,因此它不会在(仅)支持 ES6 的环境中运行。您需要先将其转换为 ES6 代码(例如,使用 Babel 或 regenerator)。

标签: javascript asynchronous async-await ecmascript-6


【解决方案1】:

是的,所以我没有意识到我没有将包含 async/await 的 stage-0 预设添加到我的 .babelrc 文件中。

代码运行良好。

编辑:正如 RGraham 所说,第 3 阶段

【讨论】:

  • stage-0 仅适用于稻草人提案。它包含许多未完成的行为,并且绝对不是 ES6。如果你想通过 Babel 预设来做到这一点,那就是 stage-3
【解决方案2】:

async/awaitES7 提案的一部分。所以你需要使用babel/traceur 将你的代码编译成 ES6/ES5

【讨论】:

  • ES7 已经完成(意味着不会添加新功能)。 async/await 会在未来的版本中出现,最早在明年。
猜你喜欢
  • 2016-02-26
  • 2019-04-24
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 2021-05-13
  • 2022-11-18
相关资源
最近更新 更多