使用http客户端从服务器获取值,并将其用于下一步操作



我有一个函数,如下所示,我需要调用服务器并获取函数返回的值。我正在使用rxjs订阅。我得到了值,但由于rxjs是异步的,所以函数在从服务器获得值之前返回。下面是一个伪代码来解释我试图做的事情:

..
let myValue = getValue();
private getValue(): string {
	let val = '';
this.httpClient.get('/server url', { observe: "response" }).subscribe(res => {
val = res.headers.get('X-Some-Header-Name');
});}
return val;
}
..

我知道susubscribe会立即返回,因此函数getValue不会从服务器返回值。有没有一种方法可以让函数只在可观察的返回时返回值?

@satanTime在他的回答中已经指出,您应该使用HttpClient返回的Observable

然后,您也可以使用async管道在模板中使用myValue,例如:

<p>{{myValue | async}}</p>

参考:https://angular.io/guide/observables-in-angular

如果您需要等待响应,那么您需要返回一个可观察的值,并在需要值的地方订阅它。

let myValue = getValue();
private getValue(): Observable<string> {
return this.httpClient.get('/server url', { observe: "response" }).pipe(
map(res => res.headers.get('X-Some-Header-Name')),
);
}

最新更新