我正在尝试使用Rxjs来管理大型状态树中的垃圾收集。
如何创建一个带有回调函数的运算符,每当可观察量的订阅者数量发生变化时,该函数就会被触发?
答案 0 :(得分:6)
多种方式,都涉及隐藏您的主题并为消费者提供包装的可观察性:
想知道什么时候订阅你的主题?
const subject = new Subject();
const observable = Observable.defer(() => {
someoneJustSubscribed();
return subject;
});
return observable;
想知道有人取消订阅的时间吗?
const subject = new Subject();
const observable = subject.finally(() => someoneJustUnsubscribed());
return observable;
想知道两者吗?
const subject = new Subject();
const observable = Observable.create(observer => {
someoneJustSubscribed();
const sub = subject.subscribe(observer);
return () => {
someoneJustUnsubscribed();
sub.unsubscribe();
}
});
return observable;