我正在 Angular2 的组件中实现以下功能:
export class MypageEditComponent {
ngOnInit() {
this.timer = Observable.timer(100, 100);
this.timer.subscribe(t => {
this.setFormData();
}
private setFormData() {
this.editUserAcountType = this.authStore.registerInfo.account_type;
this.editAddress = this.authStore.registerInfo.email;
this.editUserName = this.authStore.registerInfo.username;
}
}
一旦使用 setFormData()
正确存储了值,我想停止 Observable.timer
的重复。
但是不知道怎么做,请告诉我。
最佳答案
基本上有两种方式:
- 对
subscribe()
调用返回的订阅对象调用unsubscribe()
。 - 使用运算符(operator)
要取消订阅
,您可以这样做。
ngOnInit() {
this.subscription = timer(100, 100).subscribe(t => {
this.setFormData();
});
}
private setFormData() {
...
this.subscription.unsubscribe();
}
或者你可以使用 Subject 通过 takeUntil()
运算符来完成 Observable:
this.subject = new Subject();
ngOnInit() {
timer(100, 100).pipe(
takeUntil(this.subject),
).subscribe(t => this.setFormData());
}
private setFormData() {
...
this.subject.next();
}
也看看这些:
2019 年 1 月:针对 RxJS 6 进行了更新
关于javascript - 如何在 Angular2 中停止 observable.timer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44039278/