Angular 可观察:如果前面有map(),为什么不生成subscribe()成功函数?
我提到了这一点,这对理解可观测数据非常有帮助,但仍然有一些东西我不明白 在plunker it中,我更改了“src/myfreinds.ts”以查看发生了什么,并添加了一些控制台日志: 首先,我把它保持不变: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");
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;
}
);
}
}