我正在尝试管理内存泄漏。因此,要做的一件事就是退订观察者。
我已经遵循了许多如何创建观察者的示例,它们都可以工作,但是为什么我不能取消订阅该示例?
https://stackblitz.com/edit/angular-wsuqoy?file=src%2Fapp%2Fapp.component.ts
我应该花很多时间,因为它应该很简单。
感谢您的帮助。
答案 0 :(得分:4)
您的代码中存在几个问题:
unsubscribe
方法,但应该在Subscription实例上调用它:ts
controllerSubscription: Subscription;
ngOnInit() {
const controllerObserver = this.getObserverIncrements();
this.controllerSubscription = controllerObserver.subscribe((nextVal) => {
this.valueFromSubscriptionNext = nextVal;
});
}
unsubscribe
方法中清除时间间隔ts
const studentsObservable = new Observable(observer => {
const firstInterval = setInterval(() => {
observer.next(this.noReasonIncrement);
}, 8000);
const secondInterval = setInterval(() => {
this.noReasonIncrement++;
}, 1000);
return {unsubscribe() {
clearInterval(firstInterval);
clearInterval(secondInterval);
}};
});