javascript - 函数回调后变量不反映其值的变化
问题描述
我必须从文件中读取数据,然后验证数据电子邮件是否匹配。一旦完成,我将使用布尔值来存储值。我得到的输出是“它匹配”,但用户变量仍然是“假”,这应该是真的。
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);
解决方案
你的最后一行
console.log(user);
没有像您预期的那样工作,因为函数console.log(user)
执行时值user
没有改变,即callback
函数还没有执行。
推荐阅读
- amazon-ec2 - EC2 AMI 的配置
- python-2.7 - 合并列表中的重复字典
- javascript - 如何使用角度检查 iframe 内的内容是否已完全加载并且 src url 是否未关闭(404/不可用)?
- java - 如何将汉字音译为注音(Java)
- swift - 如何在 SwiftUI 中将控件放在特定位置
- service-worker - PWA Service Worker (Workbox) 设置的“/”代表什么?
- go - golang 中是否存在可见性问题?
- r - 如何对日期的对数回报进行回归
- c# - 在 ASP.NET Core 中启动项目时检查 jwt 令牌
- python-3.x - 在 Raspberry Pi 4 中打开任何笔记本都会出现“500 内部服务器错误”。如何解决?