Stack Overflow en español Asked by Brandon Alvarado on November 10, 2021
Estoy trabajando con ionic y hago una llamada a un API el cual me devuelve un valor para hacer una validación, el problema es que hace la validación sin esperar que termina la llamada del API
Este es el metodo de validacion
validar() {
if (this.validacion == "1") {
this.usuariosServicio.intentosUsu(this.user).subscribe((Usuarios) => {
this.listaUsuarios = Usuarios;
if (this.listaUsuarios[0] != null) {
this.valorbloqueos = this.listaUsuarios[0].intentos;
}
});
if (this.valorbloqueos >= 0 && this.valorbloqueos < 3) {
if (this.user == this.usuBD && this.pass == this.claveEnc) {
this.intentos = 0;
this.usuariosServicio
.cambiarestado(this.user, this.intentos)
.subscribe((Usuarios) => {
this.listaUsuarios = Usuarios;
});
this.usuariosServicio
.llenarBitacoraAcceso(this.user, this.intentos)
.subscribe((Usuarios) => {
this.listaUsuarios = Usuarios;
});
this.presentAlert("Informacion", "", "Logueo Exitoso.");
} else {
this.presentAlert("Informacion", "", "La contraseña es incorrecta.");
//obtener intentos y setearlos en sumaintentos + 1
//llenar bitacora
//cambiar estado
this.usuariosServicio.intentosUsu(this.user).subscribe((Usuarios) => {
this.listaUsuarios = Usuarios;
if (this.listaUsuarios[0] != null) {
this.intentos2 = this.listaUsuarios[0].intentos;
this.sumaintentos = this.intentos2 + 1;
}
});
this.usuariosServicio
.llenarBitacoraAcceso(this.user, this.intentos2)
.subscribe((Usuarios) => {
this.listaUsuarios = Usuarios;
});
this.usuariosServicio
.cambiarestado(this.user, this.sumaintentos)
.subscribe((Usuarios) => {
this.listaUsuarios = Usuarios;
});
}
} else {
this.presentAlert(
"Informacion",
"",
"El usuario se encuentra Bloqueado."
);
}
} else {
this.presentAlert(
"Informacion",
"",
"Usuario no registrado en el sistema."
);
}
}
por ejemplo necesito que el if:
if (this.valorbloqueos >= 0 && this.valorbloqueos < 3) {
se realice cuando este llamado: haya concluido
this.usuariosServicio.intentosUsu(this.user).subscribe((Usuarios) => {
this.listaUsuarios = Usuarios;
if (this.listaUsuarios[0] != null) {
this.valorbloqueos = this.listaUsuarios[0].intentos;
}
});
Lo mismo lo necesito para los otros llamados a la API pero con solo que me expliquen como hago el primero yo hago el resto
creo que lo que necesito es asyn await pero nose como utilizarlo
La llamada es asincrona, por lo que las validaciones deben incluirse dentro de la llamada. Cada una de esas llamadas son concluidas cuando se termina de ejecutar el codigo dentro de la funcion definida en subscribe(func)
:
this.usuariosServicio.intentosUsu(this.user).subscribe((Usuarios) => {
this.listaUsuarios = Usuarios;
if (this.listaUsuarios[0] != null) {
this.valorbloqueos = this.listaUsuarios[0].intentos;
}
// insertar validaciones Aqui
if (this.valorbloqueos >= 0 && this.valorbloqueos < 3) {
}
});
Answered by F.Igor on November 10, 2021
Usando promesas. Fetch usa promesas!
fetch(URL)
.then(data => ejecutoAlgo())
.then(data=> ejecutoOtraCosa())
.catch(err=> console.log("Algo salio mal");
Answered by Edwin Munguia on November 10, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP