我可能在这里遗漏了一些简单的东西,但出于某种原因,当我从函数内部设置数组的值时,我不能再在该函数之外读取该数组。
var threadArray = [];
function getThreads() {
var fs = require('fs');
// read list of threads
fs.readFile('./database/threadList.txt', function(err, data) {
var threadIds = data.toString().split("\n");
for(i in threadIds) { threadArray[i] = threadIds[i].split(","); }
console.log("This works: " + threadArray[0])
})
console.log("This does not work: " + threadArray[0] + " Returns [undefined]")
}
我在这里缺少什么?我假设与我声明数组的方式有关?
答案 0 :(得分:1)
这是一个时间问题。 # Environment Post Processor
org.springframework.boot.env.EnvironmentPostProcessor=com.blabla.config.ReadDbPropertiesPostProcessor
是一个异步操作 - 在fs.readFile
开始运行并且尚未填充fs.readFile
后,第二个无法正常运行的console.log会立即处理。您可以使用fs.readFileSync
代替
threadArray