Javascript 订阅并在Angular 2中映射

Javascript 订阅并在Angular 2中映射,javascript,angular,typescript,Javascript,Angular,Typescript,我尝试从json文件中获取数据 ngOnInit() { this.http.get('assets/json/buildings.json', { responseType: 'text'}) .map(response => response) .subscribe(result => this.data = result); console.log(this.data); } 但是我得到了未定义的。。。你能帮我解释一下为什么我没有得到我的数据

我尝试从json文件中获取数据

ngOnInit() {
   this.http.get('assets/json/buildings.json',  { responseType: 'text'})
    .map(response => response)
     .subscribe(result => this.data = result);
    console.log(this.data);
}

但是我得到了
未定义的
。。。你能帮我解释一下为什么我没有得到我的数据吗

您正在得到未定义,因为您的调用日志马上就开始了,但是设置“数据”的响应是异步的,因此在api返回值之前,它不会被设置

如果您这样做了:

this.http.get('assets/json/buildings.json',  { responseType: 'text'})
  .map(response => response)
  .subscribe(result => {
     this.data = result;
     console.log(this.data);
  });

您将看到该值,因为现在您正在等待,直到它被异步获取,直到您尝试记录它。

因为您的调用日志马上就被定义了,但是设置“数据”的响应是异步的,所以直到api返回一个值,它才被设置

如果您这样做了:

this.http.get('assets/json/buildings.json',  { responseType: 'text'})
  .map(response => response)
  .subscribe(result => {
     this.data = result;
     console.log(this.data);
  });

您会看到该值,因为现在您正在等待,直到它被异步获取,直到您尝试记录它。

如果您只是返回响应,为什么还要使用map函数

this.http.get('assets/json/buildings.json',  { responseType: 'text'})
  .subscribe(result => {
     this.data = result;
     console.log(this.data);
  });

如果只是返回响应,为什么还要使用map函数

this.http.get('assets/json/buildings.json',  { responseType: 'text'})
  .subscribe(result => {
     this.data = result;
     console.log(this.data);
  });

为什么在订阅之前返回self
array
?为什么在订阅之前返回self
array