gpt4 book ai didi

Angular 2 Observable Service 从 localStorage 返回数据

转载 作者:行者123 更新时间:2023-12-02 04:00:41 26 4
gpt4 key购买 nike

我正在扩展 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';

最佳答案

如果您需要澄清,请告诉我。

getAll(): Observable<TransactionStatus[]> {
let ScheduleFrequencies: IScheduleFrequency[] = this.storageService.get('ScheduleFrequencies');

if (ScheduleFrequencies != null) {
return Observable.of(ScheduleFrequencies);
}

return this.http.get(this.apiUrl)
.map((response)=>{
let ScheduleFrequencies: IScheduleFrequency[] = response.json();
this.storageService.save('ScheduleFrequencies', activityScheduleFrequencies);
return ScheduleFrequencies || [];
}).catch( e => {return this.handleError});
}

关于Angular 2 Observable Service 从 localStorage 返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42078667/

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