我遇到了使用Angular 5中的Observable从异步查询中获取值的困难
export class CustomComponent {
private external: any;
constructor(private http: HttpClient) {}
getContent() {
return this.http.get('api/conten/get');
}
retrieve() {
this.getContent().subscribe(content => {
this.external = content;
console.log(this.external) // here we get content that we expect
});
console.log(this.external); // there is 'undefined'
}
}
如何使用 getContent()的结果设置外部变量?
可能还有其他方法吗?
当我们需要在下面的代码中使用响应时,我想这种情况非常频繁
请举例说明如何在请求后立即从响应中获取值(例如,在Angular框架内进行请求同步)
答案 0 :(得分:1)
你做事的方式是正确的。
您的第二个console.log
打印undefined
的原因仅仅是因为retrieve
函数不等待您的异步操作(getContent()
)完成,然后再转到下一个线。
这是一个简化的时间表:
retrieve
getContent
,哦,它是异步的,让我们订阅它并继续 this.external
→undefined
getContent
返回时(有时候稍后),将返回的值分配给this.external
this.external
→correct value