[英]how to return value from observable http request and store it in local variable?
我有一个 Url http://localhost:3000/users/1
将返回 json:
{ "id": 1, "name": "David", "is_available": true }
然后我想创建一个返回is_available (布尔值)的方法。 但是下面的这个方法将返回未定义。 这对我来说似乎很奇怪,对于 angular 和可观察到的新手。
checkIsAvailable(id): boolean {
let available;
http.get('http://localhost:3000/users/1').subscribe(user => {
available = user.is_available;
}
return available;
}
如果我在.subscribe() 中使用console.log(), user.is_available将返回true。 如何正确创建从 http 请求返回值的方法?
checkIsAvailable(id): Observable<boolean>{
let available;
return http.get('http://localhost:3000/users/1').pipe(map(user => {
return user.is_available;
}));
}
订阅组件
this.service.checkIsAvailable().subscribe((res)=>this.available = res);
更新
看来您只能从异步 function 返回Promise
尝试以下
async checkIsAvailable(id): Promise<any> {
return await http.get('http://localhost:3000/users/1').toPromise();
}
改变你称之为 function 的方式
this.checkIsAvailable(id).then((res) => {
console.log(res);
// your code here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.