2017-08-26 156 views
0

這是我的服務器數據:Angular2 HTTP響應不確定

[ 
    { 
     "name" : "testname" 
    }, 
    { 
     "name" : "testnametwo" 
    } 
] 

我試圖用Angular2 http.get得到這個數據。我想用下面的代碼:

private _url : string = "appone/api/user.json" 

    user = [] 

    constructor(private http : Http) { } 

    getUsers() { 
     let res = this.http.get(this._url).map((response : Response) => { 
      return response.json() 
     }) 
     res.subscribe((data) => { 
      this.user = data 
     }) 

     alert(this.user.name) 
    } 

但我沒有得到任何結果。我不知道我錯在哪裏。

任何幫助,非常感謝。

回答

0

該代碼訂閱該響應,並且將在http.get異步返回時設置this.user。因此alert將在設置user之前觸發。

0

您的戒備需要放在訂閱內。

getUsers() { 
     let res = this.http.get(this._url).map((response : Response) => { 
      return response.json() 
     }) 
     res.subscribe((data) => { 
      this.user = data; 
      alert(this.user.name); 
     }) 

    } 

說明:您的API可能會需要一些時間來恢復數據,它會被異步調用。所以即使在API返回數據之前,您的警報也會被調用。

Subscribe僅在從API獲取數據時纔會被調用,因此它是一個適當的日誌記錄位置。另外,請考慮將記錄錯誤作爲一種好的做法。