【发布时间】:2017-03-24 15:05:59
【问题描述】:
我有一个服务,它在我的许多 Angular 2 组件中多次使用。它从 Web API 获取客户数据并返回一个 Observable:
getCustomers() {
return this.http
.get(this.baseURI + this.url)
.map((r: Response) => {
let a = r.json() as Customer[];
return a;
});
}
我将这个服务注入到我的根组件中,并且在每个想要访问客户的组件中,我都订阅了那个 Observable:
this.customerService.getCustomers().subscribe(v => this.items = v);
但是,订阅我的 Observable 的每个组件都会导致 HTTP 请求的另一次执行。但是只获取一次数据就足够了。 如果我尝试 share(),它并不能解决我的问题:
getCustomers() {
return this.http
.get(this.baseURI + this.url)
.map((r: Response) => {
let a = r.json() as Customer[];
return a;
}).share();
}
还是同样的问题。有什么建议我必须使用哪些运算符来只获取一次数据?
【问题讨论】:
标签: javascript angular rxjs observable