我有一个组件,该组件从数据服务中调用返回可观察到的方法。取消订阅ngOnDestroy
方法中的可观察对象是否必须?
服务
public class BlogService {
public getPosts(): Observable<Array<Post>> {
return this.http.get('');
}
}
组件
public class ListComponent implements OnInit {
constructor(private blogService: BlogService) {}
public ngOnInit() {
this.blogService.getPosts().subscribe(posts => this.posts = posts);
}
}
答案 0 :(得分:2)
这就是我处理退订的方式:
答案 1 :(得分:1)
在您的情况下这不是必需的,但是可以做为一种额外的预防措施,以防将来您更改getPosts
方法的实现。
通常:
有限的可观察对象,例如从Angular Http Client方法返回的那些,不需要您取消订阅,因为它们将完成,届时将自动取消订阅任何观察者。
无限可观测对象(例如NgRx商店)确实需要您取消订阅,因为它们尚未完成。
答案 2 :(得分:0)
如其他两个答案中所述,您只需要取消订阅Infinite Observables即可,而无需取消订阅。例如:
Infinite Observables —
When you have an infinite sequence, you should unsubscribe, for example when using the interval() or the fromEvent() observables.
下面的文章提供了一些您需要/不需要退订的方案示例。
src:https://netbasal.com/when-to-unsubscribe-in-angular-d61c6b21bad3