我需要使用async/await呼叫http.get
我试过https://labs.encoded.io/2016/12/08/asyncawait-with-angular/
但是

async getPrice(currency: string): Promise<number> {
  const response = await this.http.get(this.currentPriceUrl).toPromise();
  return response.json().bpi[currency].rate;
}

toPromise()
给我一个错误:
[ts]属性“topromise”不存在于类型“observate”上。
有什么解决办法吗?

最佳答案

几乎是对https://stackoverflow.com/a/41834083/1260204的直接拷贝,稍加编辑,因此它关注的是toPromise而不是map
RxJs库有许多可以使用的运算符,如toPromisemapcatchdo等,但要使用这些运算符,必须引用其中包含的文件/模块。
Angular站点上的教程对如何使用Observable<T>以及如何创建到要使用的更常见方法的引用映射(如toPromise库中的RxJs)有很好的解释。通过创建一个引用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';

关于angular - Angular 2 Http异步等待,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41856709/

10-09 20:30