我正在Angular6中进行一个项目,在那里我需要进行一个HTTP调用来获取JSON数据。调用是正确的(我已经在控制台中检查了输出)。问题是,我在Service中的函数正在返回“未定义”,触发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;
}我搜索了网络并找到了解决方案,比如诺言(),但我并不真正理解如何应用它。如果有人能帮忙就太好了。谢谢!
发布于 2019-07-11 15:25:22
你什么都没还给我。在服务中,它应该返回一个可观察的,应该由调用者订阅。
更改代码如下:
menuService.ts
getCall(url, options) {
return this.http.get(url, options);
}menu.ts
getCall(url, options) {
let result: any;
this.menuSvc.getCall(url, options)
.subscribe(result => {
console.log(result);
//do whatever you want to do with result.
});
}https://stackoverflow.com/questions/56992492
复制相似问题