我正在使用 observable
服务
getMembers(): Observable<any[]> {
return this._http.get('http://localhost/membership/main/getUsers')
.map(response => response.json() );
}
组件
members$: Observable<any[]>;
ngOnInit() {
this.members$ = this._membersService.getMembers()
}
请求
-getUsers
-getUsers
两者都返回相同的 JSON 数据
每次我加载页面时,它都会返回一个重复的请求。这与冷热要求无关。因为两个请求返回相同的响应。但是当我删除可观察对象时,一切正常。只有一个请求
最佳答案
我猜您在模板中的两个不同位置使用了 async
管道。为避免重新执行请求,您可以使用 share
运算符
import 'rxjs/add/operator/share';
members$: Observable<any[]>;
// I personally prefer to set observables in ctor
constructor() {
this.members$ = this._membersService.getMembers().share();
}
可以找到有关运营商的更多信息 here
另一种方法是在 ng-container
的帮助下在一个地方使用 async
管道:
//template
<ng-container *ngIf="members$ | async as members">
<span *ngIf="members.length === 0; else showMembers">No members!</span>
<ng-template #showMembers>
<div *ngFor="let member of members">{{member | json}}</div>
</ng-template>
</ng-container>
关于Angular:Observable 多次执行请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580929/