I'm wondering if its possible to pass the contents of fs.readfile out of the scope of the readfile method, and store it in a variable similar to.
var a;
function b () {
var c = "from scope of b";
a = c;
}
b();
Then I can console.log(a); or pass it to another variable.
My question is is there a way to do this with fs.readFile so that the contents (data) get passed to the global variable 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
Thanks
The problem you have isn't a problem of scope but of order of operations.
As readFile is asynchronous,
console.log(global_data);
occurs before the reading, and before theglobal_data = data;
line is executed.The right way is this :
In a simple program (usually not a web server), you might also want to use the synchronous operation readFileSync but it's generally preferable not to stop the execution.
Using readFileSync, you would do