首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请购延迟

请购延迟
EN

Stack Overflow用户
提问于 2019-12-24 20:54:26
回答 1查看 47关注 0票数 0

我创建了一个代码,它接收用户的CPF,然后将CPF发送到服务器,它检查CPF是否有效,如果有效,则在控制台中打印用户名,如果不是,则打印“未找到”,这是代码:

代码语言:javascript
复制
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>
代码语言:javascript
复制
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) 
  }
}
代码语言:javascript
复制
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;

}
代码语言:javascript
复制
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,我怎么能对向服务器发出请求的所有函数说,当请求的响应到达时,只调用它们下面的函数呢?

EN

回答 1

Stack Overflow用户

发布于 2019-12-25 04:56:50

我更喜欢这样写(作为异步方法):

代码语言:javascript
复制
  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)
  );
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59469145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档