【发布时间】:2020-11-06 10:55:47
【问题描述】:
export class VendorHttpService {
result = '0';
constructor(private http: HttpClient, private global: GlobalService) { }
getProfileStatus(uid: String): string {
this.http.get(this.global.getUrl()+"/vendor/profile-status/"+uid).subscribe(
(val: number) => {
this.result = String(val);
console.log("got executed "+this.result)
}, error => {
//console.log("error")
this.result = error;
}
);
return this.result;
}
}
因此,从 Angular 8 中的上述代码中,您可以看到我正在使用 RxJS 向服务器发出 HTTP 请求,但在方法内部,我想从请求中返回值而不是组件的整个 RxJS 订阅。如您所见,我已经声明了一个名为 result 的变量,我在方法内部对其进行了更新,然后将其返回,但是当我在组件中调用此方法 getProfileStatus() 时,我得到初始值0。
我不明白为什么它不更新?我想知道 RxJS 在 Subscribe() 方法中的行为。
getProfileStatus() 方法是否在 Subscribe() 完成其任务之前返回?
请放心,我已经检查了服务器和数据库端的所有内容。
【问题讨论】:
-
除了下面@asher-Kleiman 的回答之外,如果您希望异步 http 请求表现得像同步操作,您可以使用路由解析器。这可以自动订阅并返回 data 而不是 Observable 流。
标签: angular typescript http rxjs