【问题标题】:the difference between "map((respone) => respone.json())" and "map((respone) =>{ respone.json();})" [duplicate]“map((response) => response.json())”和“map((response) =>{ response.json();})”之间的区别 [重复]
【发布时间】:2017-10-23 21:57:50
【问题描述】:

这里是源代码:

export class PostComponent implements OnInit {

    posts: any[];

    constructor(private http: Http, private service: PostService) {
    }
    getAll1() {
    const url = 'http://jsonplaceholder.typicode.com/posts';
    this.http.get(url)
    .map((respone) => respone.json())
    .subscribe(posts => this.posts = posts );
    }  
  }

`

它工作正常,但是如果我为“respone.json”添加花括号,那么视觉标准输出代码会提示错误(见下文)。 添加大括号后的源代码如下:

export class PostComponent implements OnInit {

    posts: any[];

    constructor(private http: Http, private service: PostService) {
    }
    getAll1() {
    const url = 'http://jsonplaceholder.typicode.com/posts';
    this.http.get(url)
    .map((respone) => {respone.json();})
    .subscribe(posts => this.posts = posts );
    }  
  }

错误出现在最后一行的单词“this.posts”上,错误是:[ts] Type 'void' is notassignable to type 'any[]'。

为什么?

【问题讨论】:

标签: javascript angular rxjs


【解决方案1】:

.map((respone) => respone.json())其实和这个是一样的:

.map((respone) => { return respone.json() })

.map((respone) => { respone.json() }) 与此类似:

.map((respone) => { respone.json(); return undefined; })

因此,在您的第二个代码块中,respone.json() 刚刚被解除。

【讨论】:

  • 谢谢,我明白了。
猜你喜欢
  • 2023-03-13
  • 2016-01-14
  • 1970-01-01
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
相关资源
最近更新 更多