Angular6 HTTP调用等待

时间:2019-07-11 15:18:28

标签: angular http angular6

我正在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()之类的解决方案;但是我对如何应用并不十分了解。如果有人可以帮助,那就太好了。谢谢!

1 个答案:

答案 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.
         });                       
 }