【发布时间】:2020-12-03 03:38:32
【问题描述】:
我有 2 个 observables 函数
putToLs(lang): Observable<any> {
this.languageService.setLanguage(lang);
return of(true)
}
refreshPage(): Observable<any> {
return of(this.route.url);
}
我在另一个函数中使用它们
changeLang(lang) {
const allLangs = this.translate.getLangs();
this.chosenLang = lang;
this.listOfLang = [...allLangs].filter(item => item !== this.chosenLang);
this.translate.use(lang);
this.putToLs(lang).subscribe(val => {
if (val) {
this.refreshPage().subscribe(val => {
console.log(val)
this.route.navigate([val]);
})
}
})
}
如您所见,我创建了自己的 observable 来等待语言设置为 putToLs(lang)。如何取消订阅 this.putToLs(lang).subscribe 和 this.refreshPage().subscribe ,我已经看到我可以使用 pipe(takeUntil(variable)) 但我不知道应该将哪个变量放入 takeUntil()
P.S: 一般来说,我应该退订自己的 Observable 吗?我读过一篇关于 Medium 的文章,他们说我应该始终取消订阅 observable 以避免内存泄漏
【问题讨论】:
标签: angular