Angular 可观察:如果前面有map(),为什么不生成subscribe()成功函数?

Angular 可观察:如果前面有map(),为什么不生成subscribe()成功函数?,angular,typescript,rxjs,observable,Angular,Typescript,Rxjs,Observable,我提到了这一点,这对理解可观测数据非常有帮助,但仍然有一些东西我不明白 在plunker it中,我更改了“src/myfreinds.ts”以查看发生了什么,并添加了一些控制台日志: 首先,我把它保持不变: export class FriendsList{ result:Array<Object>; constructor(http: Http) { console.log("Friends are being called");

我提到了这一点,这对理解可观测数据非常有帮助,但仍然有一些东西我不明白

在plunker it中,我更改了“src/myfreinds.ts”以查看发生了什么,并添加了一些控制台日志:

首先,我把它保持不变:

  export class FriendsList{

    result:Array<Object>; 
    constructor(http: Http) { 
      console.log("Friends are being called");
      http.get('friends.json')
        .map(response => {
            console.log("map");
            console.info(response);
            response.json(); //MISTAKE WAS HERE SHOULD HAVE HAD "return response.json()" INSTEAD AS EXPLAINED IN THE ANSWER GIVEN
          })
        .subscribe(result => {
          console.log("subscribe");
          console.info(result);
          this.result =result;
        }
      );
    }
  }
这一次,在控制台中,我可以看到下面订阅
结果的详细信息
,而不是像以前一样订阅
未定义的

我想理解为什么subscribe,success函数并不每次都包含结果,无论是否应用
map
函数?
subscribe()
作为前一个操作符
.map()
返回的内容传递-
返回响应.json()


很可能
响应!=未定义
response.json()==null

订阅下的结果
未定义
”不是吗?我理解我的错误,首先,我写了
.map(response=>{console.log(“map”);console.info(response);response.json()})
而不是
.map(response=>{console.log(“map”);console.info(response);**return**response.json()}
谢谢
export class FriendsList{

  result:Array<Object>; 
  constructor(http: Http) { 
    console.log("Friends are being called");
    http.get('friends.json')
      .subscribe(
        result => {
          console.log("subscribe");
          console.info(result);
          this.result =result;
        }
      );
   }
}