Javascript subscription.unsubscripte()和subscription.remove()之间有什么区别?
我正在使用Angular 5,并使用Javascript subscription.unsubscripte()和subscription.remove()之间有什么区别?,javascript,angular,observable,subscription,Javascript,Angular,Observable,Subscription,我正在使用Angular 5,并使用subscribe()方法订阅了一个可观测值。我想知道,对订阅仅调用unsubscribe()方法是否足以清除所有内容,还是我还应该调用remove()方法 代码段: ` `。删除从内部列表中删除订阅,但它不会取消订阅 this.service.method() takeWhile(() => this.isAlive) // <-- custom variable setted to true .subscribe(res =&g
subscribe()
方法订阅了一个可观测值。我想知道,对订阅仅调用unsubscribe()
方法是否足以清除所有内容,还是我还应该调用remove()
方法
代码段:
`
`
。删除
从内部列表中删除订阅,但它不会取消订阅
this.service.method()
takeWhile(() => this.isAlive) // <-- custom variable setted to true
.subscribe(res => {
//logic
});
ngOnDestroy(){
this.isAlive = false;
}
.unsubscribe
清除所有内容,执行取消订阅操作,并将观察员从内部列表中删除。(有一个bug(已修复)没有将观察者从列表中删除)
.takeWhile
保持订阅的活动状态,因为某个情况是false
例如:
this.service.method()
.subscribe(res => {
//logic
});
这将永远不会取消订阅
this.service.method()
takeWhile(() => this.isAlive) // <-- custom variable setted to true
.subscribe(res => {
//logic
});
ngOnDestroy(){
this.isAlive = false;
}
此订阅将存在并“活动”,直到未调用yourFunction
--
我个人喜欢使用rxjs操作符takeWhile
来保持代码干净。在一个非常大的项目或具有多个订阅的单个组件中,有(IE)30个变量:订阅是令人困惑的。因此,如果您询问何时使用takeWhile
操作符,我的回答是:(以一个订阅为例)->如果您确定组件销毁时需要执行取消订阅,请使用takeWhile。如果您需要在组件仍然“活动”的特定场景中取消订阅,请使用我编写的第二个示例
希望能澄清这个论点
this.s1 = someObservable.subscribe((value) => {
//somecode
});
public yourMethod(){
this.s1.unsubscribe();
}