pyt*_*hic 3 observable rxjs typescript angular
我有以下代码返回一个observable,它检查this.data是否是有效的JSON,否则它会尝试从url中获取它.提取和一切正常.
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();
}
});
Run Code Online (Sandbox Code Playgroud)
}
现在在观察者的map/subscribe部分中,我有以下内容:
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")
}
);
Run Code Online (Sandbox Code Playgroud)
我在输出/控制台中看到的只是"IN SUB"(订阅)功能和"COMPLETE".从不执行.map函数中的console.warn.
任何帮助都非常感谢,提前感谢
永远不会执行映射,因为它会创建一个保持冷(无订阅)的可观察对象.添加一个空subscribe(),它应该工作.
observable$.map(res => {
console.warn ("IN MAP: " + JSON.stringify(res));
}).subscribe();
Run Code Online (Sandbox Code Playgroud)
关于rxjs调试的另一个提示,如果你想查看值,你可以随时使用do运算符(而不是你的map).
observable$
.do((v) => console.log('debug point: ', v)) // <-- this is the addition.
.subscribe(...your original handlers go here ...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4720 次 |
| 最近记录: |