【发布时间】:2018-01-19 18:32:26
【问题描述】:
这可能是一个基本问题,但没有找到任何足够的答案。所以这就是为什么我想创建一个 SO。
我有一个带有提交处理程序的表单。
<form class="form login" [formGroup]="loginForm" (ngSubmit)="onSubmit()" novalidate>
在提交时,我调用一个订阅 observable 的函数,该函数执行对 firebase 的 HTTP 调用(使用 AngularFire2 库)。
public onSubmit() : void {
const values = this.loginForm.value;
let subscription = this.loginUsernamePassword(values.email, values.password).subscribe((data) => {
this.processLogin(data);
}, (error) => {
console.log("erreur" + error);
}, () => {
console.log("one");
});
}
现在假设我多次提交表单,然后创建了多个订阅。我关心的是数据清理(取消订阅),但不知道处理这个问题的最佳方法是什么,尤其是因为这是一个一次性功能。我看到了两种解决方案。
1) 将订阅存储在订阅集合中,当组件被移除时,订阅集合会被销毁“ngOnDestroy”。但我觉得对于这种情况:单个 HTTP 调用,有点奇怪。
2) 在 oberservable 完成后立即取消订阅。
3) .. 还有其他吗?
感谢您的帮助和提示。
【问题讨论】:
-
我强烈建议您阅读 Ben Lesh 的 "RxJS: Don’t Unsubscribe"
标签: angular rxjs observable