与this question相关的一点,但有所不同。
TSLint抱怨此代码,因为它需要一个typedef:
private async getTranslations() {
// this.translations is a public variable used by the html
this.translations = await this._languageService.getTranslations('Foo');
}
我将其更新为
private async getTranslations() : void { ... }
这给了我错误:
类型'void'在ES5中不是有效的异步函数返回,因为它 没有引用与pPromise兼容的构造函数值
如何在不删除async关键字的情况下正确解决此问题?
答案 0 :(得分:2)
将返回类型更改为:
private async getTranslations(): Promise<void> {
this.translations = await this._languageService.getTranslations('Foo');
}
答案 1 :(得分:1)
返回Observable
类型
private async getTranslations() : Observable<any>{ ... }
答案 2 :(得分:1)
类型'void'在ES5中不是有效的异步函数返回,因为它 没有引用与pPromise兼容的构造函数值
您将收到错误消息,因为当您使用async/await
时,返回类型将是Promise
包装的对象,因此函数返回类型应为Promise<returntype>
,在您的情况下,它将
private async getTranslations() : Promise<void> {
// this.translations is a public variable used by the html
this.translations = await this._languageService.getTranslations('Foo').toPromise();
}
,如果您使用的是angular服务,则服务通常会返回observable
对象,因此您需要通过调用call的promise
函数将其转换为toPromise()
对象(如果您不放置{{ 1}},如果您在服务中使用httpClient来获取结果,它将不会触发请求。)