我刚刚观看了约翰·帕帕(John Papa)的ngConf视频,该视频谈论SubSink是最佳做法,以便取消订阅可观察对象。
我实际上是在使用Subscriptions [],然后将订阅推送到其中,然后for每次在cmp销毁时取消订阅。
是我错过了他们的东西,还是使用SubSink只是为了提高可读性?
答案 0 :(得分:2)
采用这种方式至少有一个巨大好处-您将此代码移到了应用程序逻辑之外。我认为那是主要的好处。因为取消订阅只是一种清理。它与您在应用程序中创建的逻辑无关。就像在家中一样,您不必将清洁设备留在房间内(@Component
)。您将其置于封闭状态,因此不会打扰您。
再往前走一步,您可以从组件中省略ngOnDestroy
,并创建一个实现了NgOnDestroy
的适配器,并将所有逻辑放置在那里(现在您的清洁设备仅放置在一个房间中({{ 1}})。现在,它所困扰的程度甚至更低。
@Component
How to automatically unsubscribe your RxJs observables
除此之外,它是一个非常小的程序包,只有几行代码。感谢您的分享:)我一定会使用它的。
答案 1 :(得分:0)
另一种无需安装第三方库的方法是使用.add()方法对订阅进行分组
export class CustomerComponent implements OnInit, OnDestroy {
constructor(
private dataService: DataService
){}
private subs = new Subscription();
ngOnInit() {
this.subs.add(this.dataService.getCustomer().subscribe());
this.subs.add(this.dataService.getProducts().subscribe());
}
ngOnDestroy() {
this.subs.unsubscribe();
}
}