【发布时间】:2020-03-09 23:18:21
【问题描述】:
我正在尝试在表单中检查用户是否存在于具有角度的 MySQL 数据库中。 我在 .subscribe 中创建了一个 localstorage 项目,所以如果用户存在,它会创建一个这样的 localstorage:
localStorage.setItem("exist","true");
但如果它不存在,则这样做:
localStorage.setItem("exist","false");
在函数之后我检查它是真还是假,但它是空的,因为 .subscribe 在所有函数之后。因此,如果我第二次检查它会使本地存储项正确。
this.userService.getAutor(id)
.subscribe(
(data) => { // Successins
localStorage.setItem("exist","true");
},
(error) => { // error
localStorage.setItem("exist","false");
}
);
}
这是我调用函数的地方
this.usuarioExiste(this.dniAutor);
if(localStorage.getItem('existe') == 'false'){
var expReg = /^(\d{8})([A-Z])$/;
if(expReg.test(this.dniAutor)){
this.userService.crearAutor(JSONform)
.subscribe(
(data) => { // Success
console.log("¡Bien HECHO!");
}
);
alert("Autor añadido correctamente");
}
else{
alert("Dni mal introducido")
}
【问题讨论】:
-
当用户不存在时
userService.getAutor肯定会出错吗? -
是的,因为它是一个get请求,所以如果你请求一个不存在的id它会返回false
-
但是http响应返回什么状态码?
-
我真的不知道,我只想在 .subscribe 完成时返回或创建一个 var,但稍后它不会这样做。
-
如你所说,
.subscribe完成了所有功能。因为,.getAutor返回一个 observable 并且它是异步的。您已在订阅中添加检查逻辑。
标签: javascript angular