【问题标题】:Angular 2 Observable Service to return data from localStorageAngular 2 Observable Service 从 localStorage 返回数据
【发布时间】: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


    【解决方案1】:

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

    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});
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-02
      • 2016-10-18
      • 2018-07-14
      • 2017-03-16
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 2016-10-25
      • 2019-01-13
      相关资源
      最近更新 更多