0

我有一个如下函数,我需要调用服务器并获取函数返回的值。我正在使用 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;
}
..

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

4

2 回答 2

2

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

然后,您还可以使用pipemyValue在模板中使用,例如:async

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

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

于 2020-04-05T20:49:18.463 回答
1

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

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')),
    );
}
于 2020-04-05T20:39:55.850 回答