Использование http-клиента для получения значения с сервера и использование его для следующих шагов - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть функция, как показано ниже, где мне нужно сделать вызов на сервер и получить значение, которое возвращает функция. Я использую rx js подписаться. Я получаю значение, но так как rx js является асин c, функция возвращается до того, как значение получено с сервера. Ниже приведен псевдокод, объясняющий, что я пытаюсь сделать:

..

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 не возвращает значение с сервера. Есть ли способ, которым я могу заставить функцию возвращать значение только тогда, когда наблюдаемое возвращает?

Ответы [ 2 ]

2 голосов
/ 05 апреля 2020

Как @satanTime уже указал в его ответе , вы должны работать с Observable, который возвращает HttpClient.

Затем вы также можете работать с myValue в Ваш шаблон использует async трубу , например:

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

Ссылка: https://angular.io/guide/observables-in-angular

1 голос
/ 05 апреля 2020

если вам нужно дождаться ответа, вам нужно вернуть наблюдаемое и подписаться на него там, где вам нужно значение.

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')),
    );
}
...