当服务被破坏时,我们是否需要取消订阅服务?Angular2:当服务被破坏时,我们需要取消订阅吗?
基于destroy事件,正在侦听此服务的其他组件可以取消其订阅。我只是不明白为什么这么做很重要。
这是一个很好的做法,还是一个性能目的的必要性?
当服务被破坏时,我们是否需要取消订阅服务?Angular2:当服务被破坏时,我们需要取消订阅吗?
基于destroy事件,正在侦听此服务的其他组件可以取消其订阅。我只是不明白为什么这么做很重要。
这是一个很好的做法,还是一个性能目的的必要性?
是的,你这样做,因为这样的东西可能会导致内存泄漏。这是一个很好的做法,清理自己后,以确保您不会像过去一样遇到大问题,特别是在Angular 1中。
在您的订阅相当直接后清理:
import {Subscription} from 'rxjs/Subscription';
在你的类:
public configSubscription: Subscription;
内部构造或ngOnInit
或其他合适的地方:
this.configSubscription = this.api.config$.subscribe(
config => {
this.config = config;
});
然后用此清理:
ngOnDestroy() {
this.configSubscription.unsubscribe();
}
它的工作原理相同与.toPromise(),然后(。 )? – Scipion
@Scipion在这种情况下,我不认为你需要担心。一旦您投入承诺,一旦承诺解决/拒绝,基础Observable就会完成。这是因为根据定义,承诺只会发出一个单一的值,所以他们的资源不会像Obserbles一样流连忘返。 PS:也许有人可以在这里权衡,但有一个边缘情况:如果你的承诺需要永远解决B/C源Observable不发射,那个资源仍然活着。在这种情况下,你可能需要解决它,但是我仍然没有看到memleak的危险,除非你持续跨越承诺 – BeetleJuice
好东西,干杯队友 – Scipion
难道你没有得到答案这个http://stackoverflow.com/q/35042929/744534 – Thaadikkaaran