当 Rxjs 主题订阅/取消订阅时如何接收通知 [英] How can I receive notifications when Rxjs Subject is subscribed to / unsubscribed from

查看:32
本文介绍了当 Rxjs 主题订阅/取消订阅时如何接收通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 Rxjs 作为管理大型状态树中垃圾收集的一种方式.

I'm trying to use Rxjs as a way to manage garbage collection in a large state tree.

如何创建一个带有回调函数的操作符,该回调函数会在每次 observable 的订阅者数量改变时触发?

How can I create an operator that takes a callback function that is triggered every time the number of subscribers to the observable alters?

推荐答案

多种方式,都涉及隐藏你的主题并给消费者一个包装好的 observable:

Multiple ways, all involve hiding your subject and giving consumers a wrapped observable:

想知道什么时候订阅了你的主题?

Want to know when something subscribes to your subject?

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;

这篇关于当 Rxjs 主题订阅/取消订阅时如何接收通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆