如何记录成功输出的结果?

时间:2017-04-11 20:24:23

标签: angular

我的服务中有以下内容:

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

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。这可能会在服务之间发生变化,我想最好的办法就是在使用服务和发现自己时嗅探您的网络。