我正在Angular6中的一个项目上工作,我需要在这里进行HTTP调用以获取JSON数据。呼叫正确(我已经在控制台中检查了输出)。问题是我的服务中的函数在HTTP调用完成后返回“未定义”。但是返回了“未定义”,组件中的所有其他函数都向我抛出错误。
menuService.ts
getCall(url, options) {
this.http.get(url, options).subscribe(
(data:any) => {
if(data){
console.log(data);
return data;
},
error => {
return [];
}
);
}
menu.ts
getCall(url, options) {
let result: any;
result = this.menuSvc.getCall(url, options);
let l:number = result.length; //error is thrown here, "no length property for 'undefined'
return result;
}
我已经在网上搜索并找到了Promise()之类的解决方案;但是我对如何应用并不十分了解。如果有人可以帮助,那就太好了。谢谢!
答案 0 :(得分:1)
您什么都不会退货。在使用中,它应返回一个可观察到的内容,并应由调用方订阅。
像这样更改代码:
menuService.ts
getCall(url, options) {
return this.http.get(url, options);
}
菜单
getCall(url, options) {
let result: any;
this.menuSvc.getCall(url, options)
.subscribe(result => {
console.log(result);
//do whatever you want to do with result.
});
}