变量不反映函数回调后其值的变化

时间:2019-05-24 18:15:30

标签: javascript node.js

我必须从文件中读取数据,然后验证数据电子邮件是否匹配。 一旦完成,我将使用布尔值存储值。我将输出显示为“匹配”,但用户变量仍为“ false”,应为true。

  let user = false;
  const filename = path.resolve(__dirname, "../../users.txt");
  newvar = fs.readFile(filename, "utf8", function(err, data) {
    if (err) {
      console.log(err);
    }
    const lines = data.split("\n");

    for (i = 0; i < lines.length; i++) {
      fileArray = lines[i].split("|");
      fileName = fileArray[0];
      fileEmail = fileArray[1];
      filePasswordHash = fileArray[2];
      if (email === fileEmail) {
        console.log("It Matches");
        user = true;
      }
    }
  });

  console.log(user);

1 个答案:

答案 0 :(得分:0)

您的最后一行

  

console.log(user);

不能按预期工作,因为函数console.log(user)执行值user的时间尚未更改,即callback函数尚未执行。