繁体   English   中英

如何从可观察的 http 请求中返回值并将其存储在局部变量中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM