2017-02-06 6 views
1

Ich bin nach dem Erweitern eines Observables-Dienstes, um Daten aus dem lokalen Speicher zurückzugeben.Angular 2 Observable Service zum Zurückgeben von Daten von localStorage

Szenario: Die Komponente wird Service.GetAll() abonnieren, und GetAll() wird im LocalStorage nach Daten suchen, wenn sie gefunden wird. Andernfalls wird ein API-Aufruf zum Abrufen der Daten ausgeführt.

ich es geschafft, dies mit Versprechen zu tun, aber ich ziehe es zu konvertieren

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

Passend zum Observablen wenn jemand mir zeigen, wie ich weiter unten Service erweitern können, das gleiche zu tun.

getAll(): Observable<TransactionStatus[]> { 
    return this.http.get(this.apiUrl) 
     .map(this.extractData) 
     .catch(this.handleError); 
} 

Danke Asanka

aktualisieren Danke @ nzjun90 für ihre Antwort Notwendigkeit 'von' Import 'rxjs/add/beobachtbare/von' importieren funktioniert;

Antwort

5

lassen Sie mich wissen, wenn Sie Klärung benötigen.

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