我指的是post这对理解Observables非常有帮助,但仍有一些我无法获得的东西。
在它refers to的plunker中,我更改了" 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;
}
);
}
}
在这种情况下,我可以在日志中看到result
下方subscribe
为undefined
。但response
下面的map
确实包含了回复。
如果我带走map
部分并保留subscribe
部分,请执行以下操作:
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;
}
);
}
}
这一次,在控制台中,我可以看到订阅result
而不是undefined
的详细信息,就像我之前的情况一样。
我想了解为什么订阅,成功函数不包含每次结果是否应用map
函数?
答案 0 :(得分:4)
subscribe()
作为result
传递给前一个运算符.map()
返回的内容 - return response.json()
。
response != undefined
很可能只有response.json() == null