我应该何时存储Subscription实例并unsubscribe()在NgOnDestroy生命周期中调用,何时可以忽略它们?
保存所有订阅会在组件代码中引入很多混乱.
HTTP客户端指南忽略这样的订阅:
getHeroes() {
this.heroService.getHeroes()
.subscribe(
heroes => this.heroes = heroes,
error => this.errorMessage = <any>error);
}
Run Code Online (Sandbox Code Playgroud)
同时," 航线与导航指南"说:
最终,我们会在其他地方导航.路由器将从DOM中删除此组件并将其销毁.在此之前我们需要自己清理.具体来说,我们必须在Angular破坏组件之前取消订阅.如果不这样做可能会造成内存泄漏.
我们取消订阅我们
Observable的ngOnDestroy方法.
private sub: any;
ngOnInit() {
this.sub = this.route.params.subscribe(params => {
let id = +params['id']; // (+) converts string 'id' to a number
this.service.getHero(id).then(hero => this.hero = hero);
});
}
ngOnDestroy() {
this.sub.unsubscribe();
}
Run Code Online (Sandbox Code Playgroud) subscription observable rxjs angular angular-component-life-cycle
我是通过RxJS文档阅读,并希望确保我理解之间的差异Subscriber.unsubscribe()和Subscriber.complete().
假设我有两个订阅者,即subscriber1和subscriber2的observable.如果subscriber1呼叫取消订阅他们的订阅,它将不再接收来自observable的通知,但subscriber2将继续接收它们.
文档.complete():
Observer回调从Observable接收类型为complete的无值通知.通知Observer Observable已完成发送基于推送的通知.
这是否意味着在上面的相同场景中,subscriber1可以调用complete并且它将结束observable并停止subscriber1和subscriber2的流?
rxjs ×2
angular ×1
angular-component-life-cycle ×1
javascript ×1
observable ×1
subscription ×1