angular - 您应该取消订阅 Angular 服务中的事件吗?
问题描述
我们有几个订阅构造函数中事件的 Angular 服务。我们正在尝试确定是否有必要取消订阅 ngOnDestroy() 方法中的事件。下面是代码示例:
import { Injectable, OnDestroy } from '@angular/core';
@Injectable()
export class DebuggerService implements OnDestroy {
private _subscriptions$: any = [];
constructor(private _localStorageService: LocalStorageService) {
this._subscriptions$.push(this._localStorageService.storageChanged.subscribe((event: StorageEvent) => {
//do something
}));
}
ngOnDestroy(): void {
for (let subscription$ of this._subscriptions$) {
subscription$.unsubscribe();
}
}
}
一方面,在 ngOnDestroy() 中取消订阅事件似乎是一种很好的做法,特别是对于观察者来说,因为即使你销毁了一个组件,它们也会留下来。
另一方面,服务在 Angular 中是单例的。最多只能同时存在一个服务实例,并且当应用程序被销毁时它会被销毁,所以也许不需要取消订阅?
解决方案
推荐阅读
- tensorflow - 较大数量的过滤器比 conv2D 层中较少数量的过滤器性能更差
- c++ - C Windows API 确定用户是否处于非活动状态,包括播放媒体
- jquery - Bootgrid 数据行 ID 未定义
- html - Go Template Parse 函数给出错误
- flutter - pub 获取失败(66;在“C:\Windows\System32”中找不到名为“pubspec.yaml”的文件
- flutter - 如何使用 Flutter 创建多色进度条
- php - 默认的 Apache 页面而不是 Symfony 项目页面
- mysql - Mysql按产品查询两个表数据的总和
- jenkins - 用于 k8s (AWS EKS) 部署的 Jenkins 插件
- reactjs - 使用 TypeScript 为 Redux、路由器和动态模块设置 React-Testing-Library