2017-04-11 54 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。這是服務之間可能會發生變化的一種情況,我想最好的方式就是在使用服務和發現自己的同時嗅探您的網絡。