2017-08-26 123 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获取数据时才会被调用,因此它是一个适当的日志记录位置。另外,请考虑将记录错误作为一种好的做法。