我在项目中添加了类似以下的代码:
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需要做什么?
答案 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