首页 > 解决方案 > 函数回调后变量不反映其值的变化

问题描述

我必须从文件中读取数据,然后验证数据电子邮件是否匹配。一旦完成,我将使用布尔值来存储值。我得到的输出是“它匹配”,但用户变量仍然是“假”,这应该是真的。

  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);

标签: javascriptnode.js

解决方案


你的最后一行

console.log(user);

没有像您预期的那样工作,因为函数console.log(user)执行时值user没有改变,即callback函数还没有执行。


推荐阅读