2016-05-23 4 views
0

Ich habe eine einfache Komponente, die eine Liste von Elementen aus einem Webdienst abruft.Aktualisieren Sie die Liste der Elemente in einer Tabelle von Web-Service alle X Sekunden

export class EventsList implements OnInit { 
    events: Observable<Event[]>; 

    constructor(public eventsService: EventsService) { } 

    ngOnInit(): void { 
     this.eventsService.update(); 
     this.events = this.eventsService.events; 
    } 
} 

@Injectable() 
export class EventsService { 
    events: Observable<Event[]>; 

    update(): void { 
     let url = 'event/view'; 
     let res = this.http.get(url); 
     this.events = res 
      .map((response: Response) => { 
       return (<any>response.json()).map(item => { 
        return item; 
       }); 
      }); 
    } 
} 

Ich möchte dies aktualisieren, indem ich den Web-Service alle X Sekunden abfragt. Wie soll ich das machen?

Vielen Dank im Voraus

Antwort

3

Sie Observable.interval und der flatMap Operator wie unten beschrieben verwenden:

update(): void { 
    let url = 'event/view'; 
    let res = Obsersable.interval(2000).flatMap(() => { 
     return this.http.get(url); 
    }); 
    this.events = res 
     .map((response: Response) => { 
     return (<any>response.json()).map(item => { 
      return item; 
     }); 
     }); 
} 
Verwandte Themen