【问题标题】:Life-cycle of the subscription [duplicate]订阅的生命周期 [重复]
【发布时间】:2019-03-10 18:28:15
【问题描述】:

所以,我有一个类似的组件

class DialogLoginComponent {
    constructor(
        private dialogRef: MatDialogRef<DialogLoginComponent>,
        private store: Store<Auth.State>
    ) {}

    onDoSomething(): void {
        this.dialogRef.close(); 

        this.dialogRef.afterClosed().subscribe(() =>
            this.store.dispatch(new RegistrationActions.OpenRegistrationDialog())
        );
    }
}

问题是,一旦组件被销毁,订阅是否仍然有效,或者 Angular / RxJS 是否足够智能以自动取消订阅?

【问题讨论】:

  • 在 DialogLoginComponent 中使用 on destroy 生命周期回调怎么样?

标签: angular rxjs


【解决方案1】:

不,订阅仍然有效,除非您:
- 在某处通过unsubscribe() 取消订阅,也许是在ngDestroy 中?但这不推荐,请参阅https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87
- 使用first()take(1),这样您就可以确保订阅将完成并且在获得第一个结果后不会继续存在

【讨论】:

    猜你喜欢
    • 2020-07-26
    • 2014-02-01
    • 1970-01-01
    • 2022-12-14
    • 2016-11-06
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    相关资源
    最近更新 更多