function readTextFile(filename, callback){
var fs = require('fs');
fs.readFile(filename, 'utf8', function(err, data){
if(err){
throw err;
}else{
callback(data);
}
});
}
var set1 = [];
var set2 = [];
var set3 = [];
var set4 = [];
var set5 = [];
readTextFile("./data/names.json", function(text){
var names = JSON.parse(text);
set1 = names.prop1.prop2;
set2 = names.prop1.prop3;
set3 = names.prop1.prop4;
set4 = names.prop5.prop2;
set5 = names.prop5.prop3;
});
console.log(set1);
运行这部分代码,使用“node jsonRead.js”为在 console.log() 中调用的任何数组返回 []。这段代码过去大约 80% 的时间都可以工作,但现在它根本不起作用,我不确定为什么。我将不胜感激关于如何让它再次工作的任何建议。
最佳答案
也许读取过程还在继续。
在回调中尝试 console.log(set1);
:
readTextFile("./data/names.json", function(text){
var names = JSON.parse(text);
set1 = names.prop1.prop2;
set2 = names.prop1.prop3;
set3 = names.prop1.prop4;
set4 = names.prop5.prop2;
set5 = names.prop5.prop3;
console.log(set1);
});
这是因为 readTextFile
的回调函数在读取完成时执行,而其他代码则按写入执行。
您可以使用 Promises 来解决这个问题。查看 q
库,例如:https://github.com/kriskowal/q
关于javascript - Node ,从 JSON 文件读取返回一个空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37328283/