首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular6 HTTP调用等待

Angular6 HTTP调用等待
EN

Stack Overflow用户
提问于 2019-07-11 15:18:28
回答 1查看 37关注 0票数 0

我正在Angular6中进行一个项目,在那里我需要进行一个HTTP调用来获取JSON数据。调用是正确的(我已经在控制台中检查了输出)。问题是,我在Service中的函数正在返回“未定义”,触发HTTP调用完成。但是将返回“未定义”,组件中的所有其他函数都会抛出错误。

menuService.ts

代码语言:javascript
复制
getCall(url, options) {
    this.http.get(url, options).subscribe(
                (data:any) => {
                    if(data){
                        console.log(data);
                        return data;
                    },
                error => {
                    return [];
                }
            );
}

menu.ts

代码语言:javascript
复制
 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;
 }

我搜索了网络并找到了解决方案,比如诺言(),但我并不真正理解如何应用它。如果有人能帮忙就太好了。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-11 15:25:22

你什么都没还给我。在服务中,它应该返回一个可观察的,应该由调用者订阅。

更改代码如下:

menuService.ts

代码语言:javascript
复制
getCall(url, options) {
   return this.http.get(url, options);
}

menu.ts

代码语言:javascript
复制
getCall(url, options) {
     let result: any;
     this.menuSvc.getCall(url, options)
         .subscribe(result => {
           console.log(result);
           //do whatever you want to do with result.
         });                       
 }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56992492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档