使用http客户端从服务器获取值并将其用于后续步骤

问题描述 投票:0回答:1

我有一个下面的函数,需要调用服务器并获取该函数返回的值。我正在使用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不会从服务器返回值。有没有一种方法可以使函数仅在可观察到的返回时才返回值?

javascript angular rxjs rxjs-observables
1个回答
0
投票

如果需要等待响应,则需要返回一个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')),
    );
}
© www.soinside.com 2019 - 2024. All rights reserved.