ng2*_*ser 2 javascript garbage-collection rxjs
如果我有这样的事情:
class MyComponent {
constructor() {
this.interval = Observbale.interval(1000);
}
}
const c = new MyComponent();
const subscription = c.interval.subscribe(() => { ... })
Run Code Online (Sandbox Code Playgroud)
现在让我们说在某一点上我这样做:
c = null;
Run Code Online (Sandbox Code Playgroud)
我还需要打电话subscription.unsubscribe()或GC会照顾这个"泄漏"吗?
是.您需要调用unsubscribe返回的订阅.
在内部,有一个调用window.setInterval,它的实现将持有对observable的引用.设置引用null将不会对此产生任何影响,因此将不会收集observable,并且subscribe将继续调用传递给的函数.
通常,如果您订阅了一个observable,那么observable将继续调用next传递给的函数subscribe- 除非observable完成或错误.
如果您希望observable停止调用该next函数并释放与订阅相关的任何资源(包括从next函数中引用的资源),则必须调用unsubscribe.
在没有unsubscribe调用的情况下,observable将释放资源的唯一情况是可观察的完成或错误.
| 归档时间: |
|
| 查看次数: |
1143 次 |
| 最近记录: |