getSchema(fileName): any {
this.http.get(fileName)
.map(this.extractData)
.catch(this.handleError)
.subscribe(data => {return data})
}
此函数返回undefined。如果使用console.log而不是return,则会记录填充的数据。 return使其无法等待数据响应。
我正在与观察者一起尝试,但它看起来像是不必要的代码。获取此代码的最简单方法是什么(从函数返回数据)?
答案 0 :(得分:1)
我假设您想订阅组件中的某个位置?
所以这将是您的服务:
在这里,我假设您不从调用方法发送filename
作为参数,但您知道服务中文件的位置。
getSchema(): any {
return this.http.get(fileName)
.map(this.extractData)
.catch(this.handleError)
}
在您的组件中,您可以订阅:
this.myService.getSchema()
.subscribe(data => {
this.localVariable = data;
})
但是,请查看,例如
一般来说,我认为所有教程都非常适合学习基础知识:)
答案 1 :(得分:0)
我同意其他人您应该查看教程,并且应该在您的组件中而不是在您的服务中订阅。
然而,为了回答你的问题,你未定义的原因是因为你遗漏了return this.http.get(...);
这应该是这样的。
getSchema(fileName): any {
return this.http.get(fileName)
.map(this.extractData)
.catch(this.handleError)
.subscribe(data => {return data})
}