Ich habe den folgenden Code, der eine Observable zurückgibt, überprüft es, ob das this.data JSON gültig ist, andernfalls versucht es, es von URL abzurufen. Das Holen und alles funktioniert.rxjs Observable .map nicht ausgeführt
load():Observable<IStandardListOutput[]> {
return Observable.create(observer => {
if (this.needsFetch) {
var data;
this.http.get(this.data)
.map(res => {
var result = res.text();
// console.log(result);
try {
data = JSON.parse(result)
} catch (e) {
return Observable.of([{error:"ERROR LOADING JSON: " + this.data}]);
}
return data;
}).subscribe(res => {
observer.next(this._parse(res));
observer.complete();
});
}else {
observer.next(this._parse(this.data));
observer.complete();
}
});
}
Jetzt in der Karte/abonnieren Teil des Beobachters habe ich folgendes:
let observable$ = this.loader.load(); // <-- load method above
observable$.map(res => {
console.warn ("IN MAP: " + JSON.stringify(res));
});
observable$.subscribe(res=> {
console.log("IN SUB: " + JSON.stringify(res));
},
err => {
console.log(JSON.stringify(err))
},
() => {
console.info("COMPLETE")
}
);
Was ich in der Ausgabe sehen/Konsole ist nur die "IN SUB" (abonnieren) und ein "COMPLETE". Die console.warn in der Map-Funktion wird nie ausgeführt.
Jede Hilfe ist sehr geschätzt, Dank im Voraus
Chech hier in http://stackoverflow.com/questions/34671715/angular2-http-get-map-subscribe-and-observable-pattern-basic-understan –