Ich möchte eine Observable erstellen, die Daten von einem Webapi zurückgibt. Ich möchte, dass die Daten sofort zurückgegeben werden und die API alle 10 Sekunden abgefragt wird. Der folgende Code zeigt, dass ich die Methode 'interval' verwende. Dies verzögert jedoch den ersten Datensatz um 10 Sekunden. Wie bekomme ich die erste Datenspülung ohne anfängliche Verzögerung herunter?Wie man eine Observable erhält, um Daten sofort und alle 5 Sekunden danach zurückzugeben. Benutze Intervall()?
export class EventService {
public events$: Observable<Event[]>;
private _eventsObserver: Observer<Event[]>;
private pollInterval: number = 5000;
private _dataStore: {
events: Event[];
};
constructor(private http: Http) {
this._dataStore = { events: [] };
this.events$ = new Observable(observer => this._eventsObserver = observer)
.startWith(this._dataStore.events)
.share();
}
pollEvents() {
return Observable.interval(10000)
.switchMap(() => {
return this.http.get('app/resources/data/scheduleevents.json')
.map((responseData) => {
return responseData.json();
});
})
.map((events: Array<any>) => {
let result: Array<Event> = [];
if (events["data"]) {
events["data"].forEach((event) => {
result.push(event);
});
}
return result;
});
}
}
abmelden Wenn Sie das bisschen Code hinzugefügt haben? –
aber dann bekomme ich 0 zweimal https://plnrkr.co/edit/Cl5DQ7znJRDe0VTv0Ux5?p=preview – adamdport
schön! Danke vielmals!! –