我需要使用async
/ await
来打电话http.get
我试过https://labs.encoded.io/2016/12/08/asyncawait-with-angular/
但
async getPrice(currency: string): Promise{ const response = await this.http.get(this.currentPriceUrl).toPromise(); return response.json().bpi[currency].rate; }
toPromise()
给我一个错误:
[ts]属性'toPromise'在'Observable'类型中不存在.
任何解决方案?
几乎从/sf/ask/17360801/直接复制编辑,所以它专注于toPromise
而不是map
.
该RxJs
库有很多运营商,您可以使用像toPromise
,map
,catch
,do
,等,但为了使用这些,你必须引用的文件/文件它们包含在模块中.
角度站点上的教程很好地解释了如何使用它Observable
以及如何创建引用映射到您想要toPromise
在RxJs
lib中使用的更常见的方法.通过创建一个单独的文件,引用RxJs
库中更常用的运算符和类型,您只需要引用那个您想要使用这些类型的引用文件,这样就不必重新添加每个文件中的所有运算符/类型在您希望利用它们的项目中.
这是一个示例文件(rxjs-operators.ts
以此示例命名),其中包含一些常用的方法.
// Observable class extensions import 'rxjs/add/observable/of'; import 'rxjs/add/observable/throw'; // Observable operators import 'rxjs/add/operator/toPromise'; // <=== your missing extension import 'rxjs/add/operator/catch'; import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/distinctUntilChanged'; import 'rxjs/add/operator/do'; import 'rxjs/add/operator/filter'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/switchMap';
要在文件顶部使用.toPromise
(或任何其他方法)添加此行.
import './rxjs-operators';