Angular 如何在7中检查服务调用是否已完成?

Angular 如何在7中检查服务调用是否已完成?,angular,typescript,rest,angular7,Angular,Typescript,Rest,Angular7,假设我在ngOnInit生命周期钩子上有一个特定的fetch服务调用。但在该调用给出响应之前,我切换到另一个组件,并返回到同一个第一个组件,因此又进行了另一个获取服务调用。 我有一个ngx ui加载器连接到服务调用。现在是heppens,第一个服务调用给出响应,加载程序停止,但UI没有更新。当第二个服务调用给出响应时,UI得到更新 因此,在停止的加载程序和更新的UI之间有一些时间延迟。 如何预防?或 如何检查是否有任何相关的服务调用已经在进行中,然后我们可以再次订阅它并获得响应和更新UI 代码:

假设我在ngOnInit生命周期钩子上有一个特定的fetch服务调用。但在该调用给出响应之前,我切换到另一个组件,并返回到同一个第一个组件,因此又进行了另一个获取服务调用。
我有一个ngx ui加载器连接到服务调用。现在是heppens,第一个服务调用给出响应,加载程序停止,但UI没有更新。当第二个服务调用给出响应时,UI得到更新

因此,在停止的加载程序和更新的UI之间有一些时间延迟。

如何预防?或
如何检查是否有任何相关的服务调用已经在进行中,然后我们可以再次订阅它并获得响应和更新UI

代码: 组件技术

user:any = [];

ngOnInit() {
    this.commonService.getUserList().subscribe(response => {
        this.users = response.body;
    });
}
component.html

<ng-container *ngFor="let user of users">
    <p>{{ user }}</p>
</ng-container>

{{user}}


您可以重构服务以重用数据。这样,在您描述的场景中,这将只是一个http调用

private userList$ = this.http.get<User[]>('url').pipe(shareReplay(1));
public getUserList() {
   return this.userList$;
}
private userList$=this.http.get('url').pipe(shareReplay(1));
公共getUserList(){
返回此.userList$;
}

能否提供此功能的代码?如果没有代码,答案可能与您正在寻找的内容无关for@Andrei我添加了代码以便您更好地理解。谢谢。有什么有用的吗?@MikeS。这个密码是答案的一半。如果服务调用已经处于挂起状态,我不希望服务调用继续。