2017-02-06 6 views
0

Wenn ich versuche, http Aufruf wie folgt zu machen:Angular 2 HTTP-Aufruf mit Intervall über Rxjs Intervall Operator

return this.http.get(this.url).map(res => res.json()); 

alles wird erwartet, dass ich ohne Fehler richtige Antwort habe, aber wenn ich versuche http Anruf mit Intervall zu machen (über RxJS Operatorintervall) Ich habe einen Fehler.

Mein Code sieht:

return Observable.interval(1000).map(() => { 
    return this.http.get(this.url).map(res => res.json()); 
    }); 

Fehler:

ZoneAwareError {__zone_symbol__error: Error: (SystemJS) XHR error (404 Not Found) loading http://localhost:3000/node_modules/rxjs Error: …, __zone_symbol__stack: "(SystemJS) XHR error (404 Not Found) loading http:…alhost:3000/app/home/components/home.component.js", originalErr: ZoneAwareError}

+0

Welches Verhalten versuchen Sie zu hier abschließen? Sie möchten nur jede Sekunde einen API-Aufruf machen? –

Antwort

2

Sie haben .flatMap() und IntervalObservable verwenden, um Daten zu erhalten, von einem anderen Observable:

return IntervalObservable 
    .create(1000) 
    .flatMap(() => { 
     return this.http.get(this.url).map(res => res.json()); 
    }); 
+0

Aber jetzt habe ich einen Fehler: 'EXCEPTION: Fehler in der ./AppComponent Klasse AppComponent - Inline-Vorlage: 1: 14 verursacht durch: Observable_1.Observable.interval (...). FlatMap ist keine Funktion' –

+0

Meine Antwort aktualisiert - API scheint sich geändert zu haben, Sie müssen heutzutage "IntervalObservable" verwenden. – rinukkusu

+0

Was bedeutet "IntervalObservable"? Ich sollte es importieren oder deklarieren? –