gpt4 book ai didi

javascript - subscription.unsubscribe() 和 subscription.remove() 有什么区别?

转载 作者:行者123 更新时间:2023-12-01 15:33:01 30 4
gpt4 key购买 nike

我正在使用 Angular 5 并使用 subscribe() 订阅了一个 observable方法。我想知道是否只调用unsubscribe()订阅上的方法足以清理所有内容,或者我也应该调用 remove()方法?

代码片段:

`

// somewhere in a method
this.s1 = someObservable.subscribe((value) => {
//somecode
});
// in ngOnDestroy
this.s1.unsubscribe(); // should I also call .remove()

`

最佳答案

.remove从内部列表中删除订阅,但它确实 不是 退订。.unsubscribe清理所有内容,取消订阅并从内部列表中删除观察者。 (有一个错误(已修复)没有从列表中删除观察者).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;
}
当组件即将被销毁时自动取消订阅。
   this.s1 = someObservable.subscribe((value) => {
//somecode
});

public yourMethod(){
this.s1.unsubscribe();
}
yourFunction 之前,此订阅将存在并“有效”不叫。
--
我个人喜欢使用 rxjs 运算符 takeWhile保持代码干净。在一个非常大的项目或具有多个订阅的单个组件中,拥有 (IE) 30 variables: Subscription 令人困惑.因此,如果您询问何时使用 takeWhile运营商我的回答是:(以订阅为例)-> 如果您确定 unsubscribe需要在组件销毁时做,使用takeWhile。如果您需要在组件仍然“事件”的特定场景下取消订阅,请使用我编写的第二个示例。
希望已经澄清了论点。

关于javascript - subscription.unsubscribe() 和 subscription.remove() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53428573/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com