【发布时间】:2017-06-24 00:53:30
【问题描述】:
我正在扩展 Observables 服务以从本地存储返回数据。
场景: 组件将订阅 Service.GetAll(),GetAll() 将在 localStorage 中查找数据,如果找到它将返回,否则将调用 api 来获取数据。
我设法使用 Promise 做到了这一点,但我更喜欢将其转换为 Observables
getAll(): Promise<IScheduleFrequency[]> {
let ScheduleFrequencies: IScheduleFrequency[] = this.storageService.get('ScheduleFrequencies');
if (ScheduleFrequencies != null) {
return Promise.resolve(ScheduleFrequencies);
} else {
return this.http.get(this.apiUrl)
.toPromise()
.then((response) => {
let ScheduleFrequencies: IScheduleFrequency[] = response.json();
this.storageService.save('ScheduleFrequencies', activityScheduleFrequencies);
return ScheduleFrequencies || [];
})
.catch(this.handleError);
}
}
如果有人可以告诉我如何扩展以下服务来做同样的事情,那就合适了。
getAll(): Observable<TransactionStatus[]> {
return this.http.get(this.apiUrl)
.map(this.extractData)
.catch(this.handleError);
}
谢谢 阿散卡
更新 谢谢@nzjun90 的回复,它需要导入'of' 导入'rxjs/add/observable/of';
【问题讨论】:
标签: angular service return observable