【发布时间】:2019-07-03 09:23:46
【问题描述】:
我有一个组件,它从返回 observable 的数据服务调用方法。 ngOnDestroy 方法中的 observable 是否必须取消订阅?
服务
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);
}
}
【问题讨论】:
-
不是。完成的 observables 会自动取消订阅。 Http observables 在发射后完成。
-
出错也会导致自动退订。因此,在这种情况下,只有在您担心组件会在 http 响应返回之前被销毁,并且如果您真的认为让组件保留在内存中直到响应返回是一个问题时,您才应该取消订阅。很可能不是。