gpt4 book ai didi

javascript - 等待 http.get() 的响应

转载 作者:行者123 更新时间:2023-11-30 14:35:28 24 4
gpt4 key购买 nike

我正在尝试使用 angular 和 ionic 2 创建登录功能。此功能将验证用户是否通过 php 服务器在数据库中登记并返回用户 ID。但是 http.get() 以异步方式工作形式,所以我无法比较用户是否存在于数据库中,因为函数的返回未定义。我尝试了两种方法,使用 observable 和 promises:

With observable, function that calls the service:

login() 
{
this.usuario = this.loginservice.get_usuario(this.loginusuario).subscribe(response =>this.usuario = response);
console.log(this.usuario);
}

Service code:

public get_usuario(usuario):Observable<any>
{
return this.http.get(this.urlusuario +"/"+ usuario.usuario +"/"+
usuario.senha);
}

这样,当我第一次点击触发 login() 函数的按钮时,我得到的响应是未定义的值。第二次点击,返回上次请求的值。

Using promise, function that calls the service:

login() 
{
this.usuario = this.loginservice.get_usuario(this.loginusuario);
console.log(this.usuario);
}

service code:

public get_usuario(usuario):Promise<any>
{
var resultado;
return this.http.get(this.urlusuario +"/"+ usuario.usuario +"/"+ usuario.senha).toPromise().then(function(data){
return data;
});
}

使用 promise 我在第一次执行登录函数时得到了 id 返回值,但是我找不到任何方法来访问 __zone_symbol__value,根据 console.log() 对象存储在该位置。 console response

我想知道是否有办法等待 http.get() 响应继续程序执行(在使用 observable 的情况下)或者我如何访问从 promise 返回的对象

最佳答案

在函数中使用async,在调用promise中使用await

async login() 
{
await this.usuario = this.loginservice.get_usuario(this.loginusuario);
console.log(this.usuario);
}

关于javascript - 等待 http.get() 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50496963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com