我正在尝试将json结构读入全局变量,但似乎无法使其正常工作。从文件读取该部分后,我正在使用回调进行处理。
我想填充“ source_files”。
var fs = require('fs');
var source_files = [];
function readConfig(callback) {
fs.readFile('data.json', 'utf-8', function (err, content) {
if (err) return callback(err);
callback(content);
});
}
readConfig(function(config) {
var settings = JSON.parse(config);
var inputs = settings.inputs;
for (var id=0; id < inputs.length; id++) {
source_files.push(inputs[id].replace('./',''));
}
});
console.log(source_files);
最佳答案
记住那个readFile
is asynchronous。您的最后一行console.log(source_files)
将在调用readFile
回调之前,因此在调用readConfig
回调之前运行。您需要将其移到readConfig
回调中。
照原样执行代码,结果如下:
它创建空白数组。
它调用readConfig
。readConfig
调用readFile
。readFile
开始异步读取操作并返回。readConfig
返回。
您登录source_files
,它为空。
稍后,readFile
操作完成,并调用回调。它调用readConfig
回调。readConfig
回调填充了source_files
,但是这有点像那棵树掉到了森林中,因为没有东西可以观察到。 :-)
关于file - 将JSON数据读入Node.js中的全局变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11375719/