【发布时间】:2019-01-18 08:05:17
【问题描述】:
在查看代码示例时,我经常看到服务内部的 observable 没有被取消订阅的情况。
这是一个例子:
export class AuthGuard implements CanActivate {
private isLoggedIn: boolean;
private isLoggedIn$: Observable<boolean>;
constructor(private authService: AuthService, private router: Router) {
this.isLoggedIn$ = this.authService.isLoggedIn();
this.isLoggedIn$.subscribe(res => {
if (res) {
this.isLoggedIn = true;
}
else {
this.isLoggedIn = false;
}
});
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (this.isLoggedIn) {
return true;
}
else {
this.router.navigate(['login']);
return false;
}
}
}
在这种情况下,您是否有理由不取消订阅可观察的 this.isLoggedIn$?还是上面的例子只是糟糕的编码导致内存泄漏?
【问题讨论】:
-
brianflove.com/2016/12/11/anguar-2-unsubscribe-observables 请访问这篇文章无论如何上面它只是糟糕的编码示例
-
我在问这个问题之前已经阅读了这篇文章....这篇文章没有涉及任何关于是否应该取消订阅 observables 的问题,即使 observable 不包含在组件中而是包含在服务
-
@Vlad274:我现在不必取消订阅由 http 方法创建的 observables ......但是由 Services 创建的 observables 呢?
标签: angular typescript observable subscriptions unsubscribe