【发布时间】:2025-12-31 06:35:16
【问题描述】:
Angular2 Observable 共享不起作用,重复的 http 调用正在进行
BuildingService.ts
@Injectable()
export class BuildingService {
constructor(private http: Http){
}
buildings$: Observable<Building[]>;
this.buildings: Building[];
getData() : Observable<Building[]>{
this.buildings$ = this.http.get('http://localhost:8080/buildings').share().map(this.extractData);
this.buildings$.subscribe(buildings => this.buildings = buildings);
return this.buildings$;
}
private extractData(res: Response) {
let body = res.json();
return body;
}
}
component1.ts
export class component1 {
constructor( private buildingService: BuildingService) {}
this.subscription = this.buildingService.getData()
.subscribe(buildings => console.log(buildings),
error => this.errorMessage = <any>error);
}
component2.ts
export class component2 {
constructor( private buildingService: BuildingService) {}
this.subscription = this.buildingService.getData()
.subscribe(buildings => console.log(buildings),
error => this.errorMessage = <any>error);
}
share 不工作,多个 http 调用正在进行。即使我尝试了来自this link的代码
但没用。
有人可以告诉我如何避免使用 Angular Observable 进行重复的 http 调用吗?
【问题讨论】:
-
你试过
publish().refCount()而不是share() -
@SurajRao 这只是
share()的别名 -
感谢@martin 我正在查看 OP 中的第二个答案link
-
publishLast().refCount()
标签: angular rxjs observable angular2-services rxjs5