在箭头函数

时间:2016-11-30 09:06:21

标签: angular typescript

我有从http.get(服务中的函数)

返回的数据
return this.http.get('https://randomuser.me/api/').toPromise().then(
  response => response.json().results as User[]
).catch(this.handleError);

在组件中,我调用此服务并将我的模型设置为json结果

ngOnInit(): void {
  this.userService.getUser().then(
    users => this.users = users
  );
}

在模板中,我可以使用{{user.email}}来收发电子邮件。

现在,如果我尝试在http promise.then

中添加一行代码
return this.http.get('https://randomuser.me/api/').toPromise().then(
  response =>  {
    response.json().results as User[];
    console.log(response);
  }
).catch(this.handleError);

控制台显示响应对象,但user.email不再显示在页面中。 (控制台没有错误)

2 个答案:

答案 0 :(得分:2)

箭头函数要么采用单个表达式,要么隐式返回结果或一系列语句,而不隐式返回。有关详细信息,请参阅箭头函数MDN article。要解决此问题,您需要在箭头函数的末尾显式返回response.json().results

return this.http.get('https://randomuser.me/api/').toPromise().then(
  response =>  {
    console.log(response);
    return response.json().results as User[];
  }
).catch(this.handleError);

答案 1 :(得分:0)

只需添加 return 声明

即可
return this.http.get('https://randomuser.me/api/').toPromise().then(
  //response =>  {
  //  response.json().results as User[];
  //  console.log(response);
  //}
  response =>  {
    console.log(response);
    // we have to return something here
    return response.json().results as User[];
  }
).catch(this.handleError);