在定位Safari时如何在TypeScript(angular2)中使用await/async?

nyc*_*nik 3 async-await typescript

我在我的项目中添加了一些类似于以下内容的代码:

async fun2(): Promise<string> {
  let token: string = null;

  await this.auth.getToken().then(newToken => {
    token = newToken;
  });

  return token;
}
Run Code Online (Sandbox Code Playgroud)

但是,在编译时,我收到警告:

Async functions are only available when targeting ECMAScript 2015 or higher.
Run Code Online (Sandbox Code Playgroud)

当我尝试在Chrome中运行该项目时,它可以正常工作,但在Safari中,我遇到了__awaiter函数错误.

proj.prototype.fun2 = function () {
        return __awaiter(this, void 0, Promise, function * () {
            var token = null;
Run Code Online (Sandbox Code Playgroud)

使用Typescript在Safari中使用async/await需要做什么?

Dyn*_*lon 6

在你的tsconfig.json,你需要"target": "es6"compilerOptions部分中设置.请注意,只有Safari v10.0完全符合ES6标准,因此您需要使用该版本.您的代码可能无法在其他浏览器中运行,因为它们的ES6/ES2015支持尚未完成.

Promise是ES2015的一部分,因此如果切换到es6目标,则无需执行任何操作.

更新:从TypeScript 2.1开始,您可以async/await在定位ES5时使用.