2017-04-11 80 views
1

我在我的服务如下:如何记录成功输出结果?

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-在我注入服务的组件内?

回答

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?

0

(1)在HTTP协议中,raw数据可以在标题下找到两行(“\ r \ n \ r \ n”),如果那是你愿意显示的。 否则,如果你只是想确保你得到一个200响应,只要做出正确的REGEX并做一个if语句。

(2)我不明白你的问题。如果您将服务直接注入到服务器,那意味着您是服务器,因此不需要它。

如果您做了一些让您成为客户端的东西,那么您并不是在注入服务,而只是提供客户端服务。如果是另一种情况,那么你可以自己多加200。这是服务之间可能会发生变化的一种情况,我想最好的方式就是在使用服务和发现自己的同时嗅探您的网络。