我有下面的代碼返回一個observable,它檢查this.data是否有效的JSON,否則它會嘗試從url中獲取它。抓取和一切正常。rxjs Observable .map沒有執行
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();
}
});
}
現在在地圖/訂閱觀察者的部分我有以下幾點:
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")
}
);
我在輸出中看到什麼/控制檯只有「子」(訂閱)功能和「完成」。 .map函數中的console.warn從不執行。
任何幫助,高度讚賞,謝謝提前
再檢查一下這裏http://stackoverflow.com/questions/34671715/angular2-http-get-map-subscribe-and-observable-pattern-basic-understan –