Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么变量不能正确更新?_Javascript - Fatal编程技术网

Javascript 为什么变量不能正确更新?

Javascript 为什么变量不能正确更新?,javascript,Javascript,好的,所以我必须对jsonplaceholder用户运行注册表,查看是否有重复项,并返回“注册完成”或“用户已存在” 这是代码,但不管出于什么原因,isValid始终保持“True”,尽管我知道它输入了if(user.username==usersname)。它总是显示“注册完成”。有人能解释一下为什么会这样以及如何修复它吗?fetch是一个异步函数。 当它运行时,其余的代码也会运行。 因此,isValid实际上是在检查了条件之后更新的 您应该将if条件移动到最后一个内。然后内获取或使用。您需要

好的,所以我必须对jsonplaceholder用户运行注册表,查看是否有重复项,并返回“注册完成”或“用户已存在”


这是代码,但不管出于什么原因,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";
      }
    });
}