Angular&RX:改进了订阅收集
发布时间:2020-12-17 17:22:40 所属栏目:安全 来源:网络整理
导读:更新 找到解决方案后,我根据接受的答案写了一个小帮手ng2-rx-collector,使其更容易使用.希望它可以帮助一个人一次又一次地面对同样的问题. 原始问题 假设我们在hot observables上有一个包含两个订阅的组件.我们在ngOnInit中订阅它们并在ngOnDestroy中取消订
更新
找到解决方案后,我根据接受的答案写了一个小帮手ng2-rx-collector,使其更容易使用.希望它可以帮助一个人一次又一次地面对同样的问题. 原始问题 假设我们在hot observables上有一个包含两个订阅的组件.我们在ngOnInit中订阅它们并在ngOnDestroy中取消订阅以避免内存泄漏/意外行为: public ngOnInit() { this.s1 = o1.subscribe(console.debug.bind(console)); this.s2 = o2.subscribe(console.debug.bind(console)); } public ngOnDestroy() { this.s1.unsubscribe(); this.s2.unsubscribe(); } 我喜欢Rx,但每次我需要遵循这个时,我真的想要自杀: >为每个订阅创建一个私人订阅属性 有没有办法改善这个? 例如.在RxSwift中他们有一个DisposeBag来改进这个过程,翻译成打字稿会是: private let bag = DisposeBag(); ... o1.subscribe(...).addDisposableTo(bag); 然后只破坏它一次.问题是我找不到任何类似的订阅功能. 任何想法/提示都会受到热烈欢迎. 解决方法
你可以这样做:
private teardown$= new Subject<void>(); public ngOnInit() { o1.takeUntil(this.teardown$).subscribe(console.debug.bind(console)); o2.takeUntil(this.teardown$).subscribe(console.debug.bind(console)); } public ngOnDestroy() { this.teardown$.next(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |