我创建了一个代码,它接收用户的CPF,然后将CPF发送到服务器,它检查CPF是否有效,如果有效,则在控制台中打印用户名,如果不是,则打印“未找到”,这是代码:
login.page.html
<ion-header>
<ion-toolbar>
<ion-title>login</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-card>
<ion-card-header clas="ion-text-center">
<ion-card-title>Login</ion-card-title>
</ion-card-header>
<ion-card-content>
<form>
<ion-item>
<ion-label position="floating" color="primary" for="cpf">Digite seu CPF</ion-label>
<ion-input required id="cpf" name="cpf" type="text" [(ngModel)]="usuario.cpf"></ion-input>
</ion-item>
<div class="ion-padding-top">
<ion-button shape="round" expand="block" (click)="login()">Login</ion-button>
</div>
</form>
</ion-card-content>
</ion-card>
</ion-content>login.page.ts
import { AuthLoginService } from './../Services/auth-login.service';
import { Usuario } from '../classes/usuario';
export class LoginPage implements OnInit {
private usuario: Usuario = new Usuario();
constructor(private authService: AuthLoginService) { }
login() {
this.authService.validar(this.usuario)
}
}usuario.ts
export class Usuario {
cpf: string;
senha: string;
nome: string;
numero_registros: number;
id: string;
id_na_academia: string;
nome_academia: string;
id_academia: string;
}auth-login.service.ts
import { Usuario } from "../classes/usuario";
interface respostaAluno {
ALUNO_ACADEMIA: any;
}
export class AuthLoginService {
constructor(private http: HttpClient) { }
validar(usuario: Usuario) {
if(this.usuarioExiste(usuario)) {
this.receberUsuario(usuario)
} else {
console.log('Usuário não encontrado')
}
}
usuarioExiste(usuario): boolean {
this.http
.get<UsuarioDados>(environment.url + environment.token + "&Metodo=alunoCheckCPF&AlunoCPF=" + usuario.cpf)
.subscribe(response => {
usuario.numero_registros = response.ALUNO_ACADEMIA.Registros;
})
if (usuario.numero_registros > 0) {
return true;
} else {
return false;
}
}
receberUsuario(usuario) {
this.http
.get<UsuarioDados>(environment.url + environment.token + "&Metodo=alunoCheckCPF&AlunoCPF=" + usuario.cpf)
.subscribe(response => {
usuario.nome = response.ALUNO_ACADEMIA.AlunoDados[0].nome_aluno;
usuario.id = response.ALUNO_ACADEMIA.AlunoDados[0].id_aluno_main;
usuario.id_na_academia = response.ALUNO_ACADEMIA.AlunoDados[0].id_aluno_academia;
usuario.senha = response.ALUNO_ACADEMIA.AlunoDados[0].aluno_senha;
usuario.nome_academia = response.ALUNO_ACADEMIA.AlunoDados[0].academia_nome;
usuario.id_academia = response.ALUNO_ACADEMIA.AlunoDados[0].id_academia;
});
}与前面的逻辑相同,但有点different>
在我的usuarioExiste()中,我发出了一个请求并抓取了用户拥有的寄存器的数量,if > 0返回true,if == 0返回false,但是请求似乎没有及时到达,当验证执行时,响应还没有到达,所以它总是返回false,我怎么能对向服务器发出请求的所有函数说,当请求的响应到达时,只调用它们下面的函数呢?
发布于 2019-12-25 04:56:50
我更喜欢这样写(作为异步方法):
async validar(cpf) {
let data = await this.receberAluno(cpf).toPromise();
if(data.registros > 0) {
console.log(data.nomeAluno)
} else {
console.log("Not Found")
}
}
receberAluno(cpf) {
return this.http
.get<respostaAluno>( environment.url + environment.token + "&Metodo=alunoCheckCPF&AlunoCPF=" + cpf)
);
}https://stackoverflow.com/questions/59469145
复制相似问题