Javascript 为什么变量不能正确更新?
好的,所以我必须对jsonplaceholder用户运行注册表,查看是否有重复项,并返回“注册完成”或“用户已存在”Javascript 为什么变量不能正确更新?,javascript,Javascript,好的,所以我必须对jsonplaceholder用户运行注册表,查看是否有重复项,并返回“注册完成”或“用户已存在” 这是代码,但不管出于什么原因,isValid始终保持“True”,尽管我知道它输入了if(user.username==usersname)。它总是显示“注册完成”。有人能解释一下为什么会这样以及如何修复它吗?fetch是一个异步函数。 当它运行时,其余的代码也会运行。 因此,isValid实际上是在检查了条件之后更新的 您应该将if条件移动到最后一个内。然后内获取或使用。您需要
这是代码,但不管出于什么原因,isValid始终保持“True”,尽管我知道它输入了if(user.username==usersname)。它总是显示“注册完成”。有人能解释一下为什么会这样以及如何修复它吗?
fetch
是一个异步函数。
当它运行时,其余的代码也会运行。
因此,isValid
实际上是在检查了条件之后更新的
您应该将if条件移动到最后一个
内。然后内获取
或使用。您需要将dom代码包含在.then()内,否则,它将在获取获取请求之前执行(异步操作)
if(isValid)
{
fetch('https://jsonplaceholder.typicode.com/users/')
.then(response => response.json())
.then(users => {
users.forEach(function(user){
if(user.username==usersname){
isValid=false;
}
});
});
if(isValid){
var x = document.getElementsByClassName("success");
x[0].innerHTML="";
var y = document.getElementsByClassName("errExist");
y[0].innerHTML="Registration Complete";
}else{
var x = document.getElementsByClassName("errExist");
x[0].innerHTML="";
var y = document.getElementsByClassName("success");
y[0].innerHTML="User Already Exists";
}
}
if (isValid) {
fetch("https://jsonplaceholder.typicode.com/users/")
.then((response) => response.json())
.then((users) => {
users.forEach(function (user) {
if (user.username == usersname) {
isValid = false;
}
});
if (isValid) {
var x = document.getElementsByClassName("success");
x[0].innerHTML = "";
var y = document.getElementsByClassName("errExist");
y[0].innerHTML = "Registration Complete";
} else {
var x = document.getElementsByClassName("errExist");
x[0].innerHTML = "";
var y = document.getElementsByClassName("success");
y[0].innerHTML = "User Already Exists";
}
});
}