gpt4 book ai didi

angular - Observable:在组件和服务中订阅数据有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 17:24:36 25 4
gpt4 key购买 nike

在组件中订阅 observable 与在服务中以回调作为参数订阅它有什么显着区别吗?

组件

constructor(public dataService: DataService) {
this.dataService.getData()
.subscribe(users => {
this.user = users;
console.log(this.user);
});

服务

getData() {    
return this.http.get(this.url)
.map(res => res.json())
}

对比

组件

constructor(public dataService: DataService) {
this.dataService.getData( callback => {
this.user = this.dataService.user;
});

服务:

 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);
});
}

结果是相同的,所以除了有点复杂的语法外,我不太明白其中的区别。哪种方法最好?

最佳答案

据我了解,订阅服务并不是最佳做法。当您订阅一个可观察对象(特别是热可观察对象,因为它们没有完成)时,它会创建一个订阅。如果您不使用异步管道或手动取消订阅,那么它会造成内存泄漏,从而降低应用程序的性能。但是隐藏订阅也可以防止将可观察对象链接到其他可观察对象以创建更多“ react 性”应用程序。

在您上面的示例中,我永远不会在服务中订阅并设置一个公共(public)属性供 angular 观看。此外,它可能会导致变更检测问题以及包括可维护性在内的其他问题。

关于angular - Observable:在组件和服务中订阅数据有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48622632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com