Машинопись: Получить данные за пределами Observable - PullRequest
0 голосов
/ 22 апреля 2020

Я пытался отправить HttpRequest в Typescript. Мне нужно хранить полученные данные вне функции подписки. Но когда я хочу напечатать пользовательскую переменную вне подписки, это undefined. В функции подписки все работает нормально. Так как же я могу получить доступ к данным вне функции подписки?

private user: User;

public sendHttpLogin(username: string, password: string) {

  this.http.get<User>('http://localhost:8080/login?password='+password+'&username='+username).subscribe(data => {
    //save the data on a User Object
    this.user = data;
    //this works fine
    console.log(this.user)
  });

  //this is undefined
  console.log(this.user);
}

1 Ответ

0 голосов
/ 22 апреля 2020

Второй console.log вызывается до того, как http.get что-либо вернул, поэтому он не определен.

Ваш первый console.log правильный, вы можете использовать данные только после того, как они вернулись из get функция.

Вы можете вызвать другую функцию там, чтобы продолжить поток вашего приложения.

private user: User;

public sendHttpLogin(username: string, password: string) {

  this.http.get<User>('http://localhost:8080/login?password='+password+'&username='+username).subscribe(data => {
    this.continueApp(data)
  })
}

private continueApp(data){
    this.user = data
}
...