gpt4 book ai didi

javascript - RxJS - 我需要退订吗

转载 作者:行者123 更新时间:2023-11-29 16:05:19 25 4
gpt4 key购买 nike

如果我有这样的东西:

class MyComponent {

constructor() {

this.interval = Observbale.interval(1000);

}
}

const c = new MyComponent();
const subscription = c.interval.subscribe(() => { ... })

现在假设我在某个时刻这样做:

c = null;

我仍然需要调用 subscription.unsubscribe() 还是 GC 会处理这个“泄漏”?

最佳答案

是的。您需要对返回的订阅调用 unsubscribe

在内部,有一个对 window.setInterval 的调用,它的实现将保存对可观察对象的引用。将您的引用设置为 null 对此没有影响,因此不会收集可观察对象,并且将继续调用传递给 subscribe 的函数。

一般来说,如果您订阅了一个可观察对象,该可观察对象将继续调用传递给 subscribenext 函数 - 除非可观察对象完成或出错。

如果您希望 Observable 停止调用 next 函数并释放与订阅关联的任何资源 - 包括从 next 函数中引用的资源 - 你必须调用取消订阅

Observable 会在没有 unsubscribe 调用的情况下释放资源的唯一情况是当 Observable 完成或出错时。

关于javascript - RxJS - 我需要退订吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44536497/

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