【发布时间】:2020-03-05 12:39:31
【问题描述】:
问题:
我的应用在我加载的第一个组件上运行良好,当我点击切换到另一个组件时,它会在 My DAL 上创建另一个订阅。
代码
servers.component.html
<div class="row">
<div class="col-md-12">
<app-server-list></app-server-list>
</div>
<router-outlet></router-outlet>
</div>
服务器备份.component.html
<div class="row">
<div class="col-md-12">
<app-server-list ></app-server-list>
</div>
</div>
在 server-list.component.ts 中,我想每 5 秒刷新一次数据库中的数据,所以我这样做:
this.dataStorageService.getServerPerformanceInfo()
this.interval = setInterval(() =>
{
this.dataStorageService.getServerPerformanceInfo()
} , 5000)
当我在服务器和服务器备份之间切换时,我取消订阅:
ngOnDestroy()
{
this.subscriptions.forEach(subscription => {
subscription.unsubscribe();
});
clearInterval(this.interval);
}
最后在我的 data-storage-service.ts 上
getServerPerformanceInfo()
{
this.serverPerfSub = this.http.get<ServerPerformance[]>(DEV + '/getServerPerformance').subscribe
(
(data) => {
this.serversService.setPerformanceInfo(data);
}
)
}
当我在我的组件之间切换时,服务器列表组件被销毁、创建,但 dataStorageService 调用变得越来越频繁,直到我的 API 方法开始失败。
这肯定与 dataStorageService 上的订阅有关,但我该如何清理呢?
【问题讨论】:
-
没有变量我很累。我也试过这个: if (!this.serverPerfSub) { //get the data } 这没用。问题是何时以及如何清理 DataStorageSerivce 上的订阅?因为它始终存在并且不断收到越来越多的对我的 api 的调用。订阅列表不在 dataStorageService 上
标签: javascript angular angular8