Mel*_*lle 6 observable angular
订阅组件中的observable或者使用回调作为参数在服务中订阅它是否有任何显着差异?
零件
constructor(public dataService: DataService) {
this.dataService.getData()
.subscribe(users => {
this.user = users;
console.log(this.user);
});
Run Code Online (Sandbox Code Playgroud)
服务
getData() {
return this.http.get(this.url)
.map(res => res.json())
}
Run Code Online (Sandbox Code Playgroud)
VS
零件
constructor(public dataService: DataService) {
this.dataService.getData( callback => {
this.user = this.dataService.user;
});
Run Code Online (Sandbox Code Playgroud)
服务:
getData(callback: (receiver: User) => void) {
return this.http.get(this.url)
.map(res => res.json())
.subscribe(users => {
this.user = users;
callback(this.user);
console.log(this.user);
});
}
Run Code Online (Sandbox Code Playgroud)
结果是相同的,所以除了更复杂的sintax之外,我没有太大的区别.哪个是最好的方法?
根据我的理解,订阅服务并不是最佳做法.当您订阅一个observable(特别是一个hot observable,因为它们没有完成)时,它会创建一个订阅.如果您没有取消订阅订阅,使用异步管道或手动取消订阅,则可能会造成内存泄漏,从而降低应用程序的性能.但隐藏订阅还会阻止observable被链接到其他可观察对象以创建更多"反应性"应用程序.
在上面的例子中,我永远不会在服务中订阅,并设置一个公共属性for angular to watch.此外,它可能会导致更改检测问题以及其他问题,包括可维护性.
| 归档时间: |
|
| 查看次数: |
2721 次 |
| 最近记录: |