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 有多少订阅者?的主要内容,如果未能解决你的问题,请参考以下文章
RxJs。如果我有两个 observable,如何抛出错误并继续发出值?
如何从 TextInput(onChange 或 onTextChange)创建 rxjs Observable
Observable .do() 运算符 (rxjs) 的用例
RxJS:如何将 Observable<Observable<Thing>> 转换为 Observable<Thing[]>