存储nodejs fs.readfile's产生一个变量并传递给全局变量

Storing nodejs fs.readfile's result in a variable and pass to global variable

本文关键字:变量 一个 全局变量 readfile fs nodejs 存储      更新时间:2023-09-26

我想知道是否可以将fs.readfile的内容传递到readfile方法的范围之外,并将其存储在类似于.的变量中

var a;
function b () {
    var c = "from scope of b";
    a = c;
}
b();

然后我可以控制台.log(a);或者将其传递给另一个变量。

我的问题:

有没有办法用fs.readFile来实现这一点,以便将内容(数据)传递给全局变量global_data。

var fs = require("fs");
var global_data;
fs.readFile("example.txt", "UTF8", function(err, data) {
    if (err) { throw err };
    global_data = data;
});
console.log(global_data);  // undefined

您的问题不是范围问题,而是操作顺序问题。

由于readFile是异步的,所以console.log(global_data);发生在读取之前,并且发生在执行global_data = data;行之前。

正确的方法是:

fs.readFile("example.txt", "UTF8", function(err, data) {
    if (err) { throw err };
    global_data = data;
    console.log(global_data);
});

在一个简单的程序(通常不是web服务器)中,您可能还想使用同步操作readFileSync,但通常最好不要停止执行。

使用readFileSync,您可以执行

var global_data = fs.readFileSync("example.txt").toString();