【发布时间】:2023-03-30 13:07:01
【问题描述】:
有 2 种服务:
- DataService - 从服务器获取数据
- CacheService - 订阅 DataService 并保存映射数据
和组件
- ComponentA - 注入 CacheService 并具有处理缓存数据的 foo 函数
我的问题是 - 当我的 foo 函数被调用时,我如何确保我的 CacheService 处理完数据。
当前解决方案,我有点喜欢,但不确定是否有更好的 Angular 2 方法。使用 Rx.Observables 完成
我的解决方案(代码已简化):
export class CacheService {
myData: IData;
dataLoadedObservable: Observable;
private _emitter: any;
constructor(dataService: DataService){
this.dataLoaded = Observable.create(
e => {
_emitter = e;
});
}
private cacheData(){
this.dataService.loadData().subscribe(data => {
this.myData = data;
this._emitter.next('data loaded');
});
}
}
组件A
export class ComponentA {
this.cacheService.dataLoadedObservable.subscribe(
isLoaded => {
if(isLoaded === 'data loaded'){
// Now this.cacheService.myData is ready
}
}
);
}
【问题讨论】:
标签: angular lazy-loading observable angular2-services angular-services