Rxjs 如何知道 observable 有多少订阅者?

Posted

技术标签:

【中文标题】Rxjs 如何知道 observable 有多少订阅者?【英文标题】:Rxjs how to know how many subscribers observable have? 【发布时间】:2017-03-02 15:34:01 【问题描述】:

当我有多个订阅者订阅一个 observable 时,例如:

const myInterval = Rx.Observable.interval(500);

const subscriptionOne = myInterval.subscribe(val => doSomething());
const subscriptionTwo = myInterval.subscribe(val => doSomething());

我怎么知道有多少订阅者仍然注册到 myInterval observable?例如,我需要这些信息来防止内存泄漏,以防我忘记退订其中之一?

【问题讨论】:

【参考方案1】:

当使用 Angular 2 时,你应该尽量使用异步管道,因为当你的组件被销毁时,它会自动为你取消订阅。

话虽如此。您在这里可观察到的区间是冷可观察的。这意味着,对于每个订阅,都会设置值的生产者。这意味着,每次都会创建一个新订阅。因此,知道您仍然有多少订阅冷可观察是您无法回答的问题。

恐怕您唯一能做的就是以干净的方式管理您的订阅,并尽可能地依赖 Angular。

【讨论】:

例如,如果我在我的组件中使用表单中的 valueChanges.subscribe?我需要手动退订吗?

以上是关于Rxjs 如何知道 observable 有多少订阅者?的主要内容,如果未能解决你的问题,请参考以下文章

jxl导出excel时报错,求高手支招,在线等

如何在打字稿中使用 rxjs6 分区?

如何使用rxjs map挖掘HttpClient get请求响应?

价值 = 0 而其他订单项 > 0

RxJS 使用 snapshotChanges() 的方式是啥?

如何在 RxJS 中处理这个 json 响应?