在一段由“角”成员斯蒂芬拍摄的视频中,他演示了“使用角服务工作人员更新和通知”。
我们何时何地应该取消订阅角的SwUpdate.available?或者我们是否应该关注来自这个订阅的开销,即使它不是没有订阅的呢?
Stephen订阅了下面的代码片段。
constructor(update: SwUpdate, push: SwPush, snackbar: MatSnackBar) {
update.available.subscribe(update => {
console.log('update available');
});
}
发布于 2018-05-30 07:13:15
使用takeWhile并检查是否启用了服务工作人员更新。只要启用了它,我们就继续订阅。
constructor(update: SwUpdate, push: SwPush) { update.available .pipe( takeWhile(() => this.swUpdate.isEnabled) ) .subscribe(update => { console.log('update available'); }); }
发布于 2018-05-25 06:21:43
别听彭吉的话。如果订阅可能会累积(从而产生内存泄漏),则应该取消订阅所有订阅。
我的意思是,如果订阅不是在只被调用一次的全局服务或实用程序类中,而是在组件中(在用户单击应用程序时被初始化和销毁),那么您应该执行以下操作:
private _destroy$ = new Subject();
ngOnDestroy(): void {
this._destroy$.next();
}
constructor(private _store: Store<AppState>) {
this._store.select(someReduxStream$).takeUntil(this._destroy$).subscribe(value => {/**/});
}如果您不想自己将这段代码添加到应用程序中包含流的每个组件中,则可以使用方面/装饰器,如:https://github.com/NetanelBasal/ngx-take-until-destroy
如果您在某个地方有一个您知道只使用一次的流,那么您可以在收到第一个值之后取消订阅:
stream$.take(1).subscribe(value => {/**/});https://stackoverflow.com/questions/50520610
复制相似问题