Pau*_*aul 7 javascript scope node.js
我想知道是否可以将fs.readfile的内容传递出readfile方法的范围,并将其存储在类似于的变量中.
var a;
function b () {
var c = "from scope of b";
a = c;
}
b();
Run Code Online (Sandbox Code Playgroud)
然后我可以console.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
Run Code Online (Sandbox Code Playgroud)
谢谢
Den*_*ret 22
您遇到的问题不是范围问题,而是操作顺序问题.
由于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);
});
Run Code Online (Sandbox Code Playgroud)
在一个简单的程序(通常不是Web服务器)中,您可能还希望使用同步操作readFileSync,但通常最好不要停止执行.
使用readFileSync,你会这样做
var global_data = fs.readFileSync("example.txt").toString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11738 次 |
| 最近记录: |