gpt4 book ai didi

angular - 没有可观察对象的服务

转载 作者:行者123 更新时间:2023-12-05 08:49:44 25 4
gpt4 key购买 nike

我很难理解,为什么我需要使用 observable。我有一个非常简单的商店,如下所示

@Injectable({
providedIn: 'root'
})
export class DataService {

private readonly personData: Person = new Person();
constructor() {
}

public getPerson():Person{
return this.personData;
}
public setAge(age:number){
this.personData.age = age;
}
}

如果我使用 observable,上述服务工作得很好并且完全一样

@Injectable({
providedIn: 'root'
})
export class DataService {

// @ts-ignore
private readonly personData: BehaviorSubject<Person> = new BehaviorSubject<Person>({});

public personData$: Observable<Person> ;

constructor() {
this.personData$ = this.personData.asObservable();
}

public getPerson():Person{
return this.personData.getValue();
}

public setAge(age:number){
this.getPerson().age = number;
}
}

我的问题是,为什么我要使用 observable ,简单的服务属性工作得很好!或者我错过了大局!请帮助我理解。

最佳答案

当您想与多个组件共享相同的数据时,Observables 很有用,因为它们都可以订阅相同的源并不断获取最新的更新数据。对于基本用例,这似乎没什么用,但在大型项目中肯定有用。

在使用 OnPush 检测策略优化 Angular 的变化检测时,它们也非常有用。可观察对象可以告诉 View 它已更新,因此 View 也应该更新。 Async pipe

因此,如果您没有使用 OnPush 检测策略,或者您的项目的功能非常基础,您可能真的不需要 observables,但因为它们非常有用,并且老实说,有点难用,如果只是为了学习,我会说无论如何都要使用它们。它们为您提供了一种思考事物的新方式。查找“响应式编程”。

关于angular - 没有可观察对象的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63321727/

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