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

时间:2016-10-13 21:20:38

标签: typescript async-await

我在项目中添加了类似以下的代码:

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

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

  return token;
}

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

Async functions are only available when targeting ECMAScript 2015 or higher.

当我尝试在Chrome中运行项目时,它运行正常,但在Safari中我在__awaiter函数上出错。

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

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

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:4)

1)确保您拥有TypeScript 2.1。在定位ES5时,早期版本不完全支持async await

2)要使Promise在ES5中有效,请按照此问题的接受答案的说明进行操作:TypeScript Promise TS2304 TS2529