我从服务器响应中返回了我的对象,我可以在google chrome dev工具的网络标签响应中看到。
module.exports = (req, res) => {
var obj = {
name: "Thabo",
age: 23
};
res.json({obj})
};
我有angular2-typescript服务,它使用promise来从服务器获取响应
export class MyService {
constructor(private http: Http) { }
getMessage(): Promise<any> {
return this.http.get('/map-moving-agents')
.toPromise()
.then((res)=> {
console.log(res.json().data);
res.json().data;
})
.catch(this.handleError);
}
private handleError(error: any): Promise<any> {
console.error('An error occurred', error);
return Promise.reject(error.message || error);
}
}
我甚至在响应的'then'上记录了响应,并且记录未定义。
这是使用服务的组件
export class MapMovingAgents implements OnInit{
msg: {};
constructor(private myService: MyService){}
getMessage(): void {
this.myService.getMessage().then((res) => { this.msg = res;})
console.log(this.msg);
}
ngOnInit(): void {
this.getMessage();
}
}
答案 0 :(得分:1)
您需要返回其余代码的最终值才能使用
return this.http.get('/map-moving-agents')
.toPromise()
.then((res)=> {
console.log(res.json().data);
return res.json().data; <--------------
})
.catch(this.handleError);
}
答案 1 :(得分:1)
getMessage(): void {
this.myService.getMessage().then((res) => { this.msg = res;})
console.log(this.msg);
}
将记录undefined
,因为getMessage()
函数是async
函数。
将其更改为
getMessage(): void {
this.myService.getMessage().then((res) => {
this.msg = res;
console.log(this.msg);
});
}
并且您的回复没有data
字段,因此res.json().data;
undefined
仅返回res.json()
或res.json().obj