我正在尝试将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/

10-12 20:58