代码执行优先级JavaScript NodeJS [重复]

dgsult0t  于 2023-06-22  发布在  Node.js
关注(0)|答案(1)|浏览(112)

此问题已在此处有答案

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在程序的末尾。

rjzwgtxy

rjzwgtxy1#

fs.readFile更改为fs.readFileSync
请记住,如果您正在发送目录,这些to方法可能会失败。在此处查看node的文档。
这个问题也可以帮助你stackoverflow

相关问题