Я пытаюсь сделать функцию входа в систему с использованием angular и ionic 2. Эта функция проверяет, находится ли пользователь в кадастре в базе данных через php-сервер, и возвращает идентификатор пользователя. Но http.get () работает в асинхронном режиме.форма, поэтому я не могу сравнить, если пользователь существует в базе данных, потому что возвращение функции не определено.Я попробовал два способа, используя наблюдаемые и обещания:
С наблюдаемой функцией, вызывающей службу:
login()
{
this.usuario = this.loginservice.get_usuario(this.loginusuario).subscribe(response =>this.usuario = response);
console.log(this.usuario);
}
Сервисный код:
public get_usuario(usuario):Observable<any>
{
return this.http.get(this.urlusuario +"/"+ usuario.usuario +"/"+
usuario.senha);
}
Таким образом, при первом нажатии кнопки, которая вызывает функцию login (), в ответ я получаю неопределенное значение.Второй раз, когда я нажимаю, он возвращает значение предыдущего запроса.
Используя обещание, функция, которая вызывает службу:
login()
{
this.usuario = this.loginservice.get_usuario(this.loginusuario);
console.log(this.usuario);
}
код услуги:
public get_usuario(usuario):Promise<any>
{
var resultado;
return this.http.get(this.urlusuario +"/"+ usuario.usuario +"/"+ usuario.senha).toPromise().then(function(data){
return data;
});
}
Используя обещание, я получаю возвращаемое значение идентификатора при первом выполнении функции входа в систему, однако я не смог найти какой-либо способ доступа к значению __zone_symbol__, где хранится объект в соответствии сconsole.log()
консольный ответ
Я хочу знать, есть ли способ ожидания ответа http.get () для продолжения выполнения программы (в случае использования наблюдаемого) или как это сделатьЯ получаю доступ к объекту, который возвращается из обещания