【发布时间】:2020-08-09 01:42:35
【问题描述】:
我很难理解,为什么我需要使用 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,因为数据立即可用。当您不知道数据何时返回时使用 Observables。
-
想象一个场景,当你的 Person 的值发生变化时,你想做一些事情,在这种情况下,使用 Observable 变得很有用,因为你可以注册回调(订阅)并且每当你得到一个新的 Person值您的回调可以执行,它允许您监听更改事件并对它们做出反应(在您的示例中,它没有任何区别,因为您从不调用
this.personData.next(value)
标签: angular rxjs observable rxjs-observables