Angular 定义良好的值在调用上下文中未定义

Angular 定义良好的值在调用上下文中未定义,angular,typescript,promise,Angular,Typescript,Promise,我有一个调用服务的角度组件。该组件具有如下方法: componentDoThing(id){ this.member = this.service.getSomeValue(id); console.log("component: member: " + this.member); //member is undefined } 以及服务: getSomeValue(id){ local_http_method.get(/some/url)

我有一个调用服务的角度组件。该组件具有如下方法:

componentDoThing(id){
    this.member = this.service.getSomeValue(id);
    console.log("component: member: " + this.member);
    //member is undefined
}
以及服务:

getSomeValue(id){
    local_http_method.get(/some/url)
         .then(result => {this.something = result});
    console.log("service: this.something:" + this.something);
    // this.something is {"foo":"bar","1":"3"}
    return this.something;

为什么组件中没有定义值,但服务中定义得很好?

这似乎是一种不好的做法,您返回的值不能保证是正确的,因为在返回值时承诺可能无法得到解决。但这并不能解释为什么这两个日志给出不同的结果。这能回答你的问题吗?为什么它在一个地方没有定义,而在另一个地方定义?运气和时机。不要依赖那些;从服务函数返回承诺并使用
。然后(value=>/*使用value*/*的代码)
。在消费组件中。从您的服务方法中,您应该
返回您的承诺,以便能够编写
this.service.getSomeValue(id)。然后((result)=>{console.log(result)})
。或者您可以使用
异步等待
方法