当 RxJs 主题没有观察者时调用方法

2024-01-19

当所有观察者都取消订阅主题时如何调用方法。

Update

const alphaStore = new BehaviourSubject(0);
observer1 = alphaStore.subscribe(console.log);
observer2 = alphaStore.subscribe(console.log);

当所有这些观察者都取消订阅时。我想要一个被调用的方法。喜欢...

观察者1取消订阅

观察者2取消订阅

所有观察员离开


你所描述的已经是finalize()操作员。更好地说finalize()当链释放时调用它的回调,这意味着当所有观察者取消订阅、链完成或出错时调用它。

const subject = new Subject();
const shared = subject.pipe(
  finalize(() => console.log('finalize')),
  share(),
);

https://stackblitz.com/edit/rxjs-rebfba https://stackblitz.com/edit/rxjs-rebfba

当所有观察者取消订阅时share()取消订阅触发的源finalize().

目前还没有办法区分原因finalize()被调用。看到这个问题https://github.com/ReactiveX/rxjs/issues/2823 https://github.com/ReactiveX/rxjs/issues/2823以及如何做到这一点的示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 RxJs 主题没有观察者时调用方法 的相关文章

随机推荐