gpt4 book ai didi

Angular:Observable 多次执行请求

转载 作者:太空狗 更新时间:2023-10-29 18:05:12 27 4
gpt4 key购买 nike

我正在使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com