此问题已在此处有答案:
Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference(7个回答)
14小时前关闭
我在服务器上运行脚本:
const fs = require('fs');
async function loadData() {
fs.readFile('ADDR To FILE\\cfg.json', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
map = JSON.parse(data);
console.log("1:" + serverAddr);
serverAddr = map.serverAddr;
console.log("2:" + serverAddr);
});
console.log("3:" + serverAddr);
console.log("4:" + serverAddr);
}
var serverAddr = "NOT INIT";
console.log("5:" + serverAddr);
loadData();
console.log("6:" + serverAddr);
cfg.json
文件(来自同一文件夹):
{
"serverAddr":"https://google.com/"
}
我的输出是:
5:NOT INIT
3:NOT INIT
4:NOT INIT
6:NOT INIT
1:NOT INIT
2:https://google.com/
怎么了?如果我在fs.readFile
之前添加await
,我会收到来自VS Code的消息:'await' has no effect on the type of this expression.ts(80007)
在我的程序开始时,我需要使用硬盘上的.json
文件初始化全局变量。怎么了?为什么不按顺序执行?我期望在执行3和4之前执行1和2,但是使用没有await
的ant,console.log()1和2在程序的末尾。
1条答案
按热度按时间rjzwgtxy1#
将
fs.readFile
更改为fs.readFileSync
请记住,如果您正在发送目录,这些to方法可能会失败。在此处查看node的文档。
这个问题也可以帮助你stackoverflow