我的服务中有以下内容:
return this.http.get(this.wakeUrl)
// ...and calling .json() on the response to return data
.map((res:Response) => {res.json()
console.log("Hello")
})
//...errors if any
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
我可以在chrome的网络选项卡中看到响应成功返回200,但如何在控制台中记录? 在我的组件中,我想订阅它,但我没有得到任何输出......
this.myService.makeHttpCall().subscribe(
data => {
console.log(data)
},
err => {
console.log(err);
});
如何记录: 1-一旦数据重新出现在我的服务中? 2-在我将服务注入的组件中?
答案 0 :(得分:1)
如果您想在映射中安装console.log,则需要更改控制台的顺序,然后实际返回响应:
.map((res:Response) => { console.log("Hello"); return res.json()})
没有控制台日志,它应该可以正常使用:
.map((res:Response) => { return res.json()})
或只是
.map(res => res.json())
当您想要控制组件中的数据时,您只需在回调(订阅)中执行此操作,就像您一样。有点相关:由于我们在这里处理异步事件,这可能是一个有用的读取以供将来参考,这也解释了控制台日志在组件中的位置:How do I return the response from an Observable/http/async call in angular2?
答案 1 :(得分:0)
(1)在HTTP协议中,原始数据可以在标题下找到两行(“\ r \ n \ r \ n”),如果这是你愿意显示的那一行。 否则,如果您只想确保获得200响应,只需制作正确的REGEX并制作if语句。
(2)我不明白你的问题。如果您将服务直接注入服务器,那意味着您就是服务器,因此无需事先。
如果您做的事情使您成为客户端而不是注入服务,那么您只需提供客户服务。如果是另一种情况,那么你自己可以额外增加200。这可能会在服务之间发生变化,我想最好的办法就是在使用服务和发现自己时嗅探您的网络。