这段代码
var fs = require("fs");
var freeApps = readFile();
console.log('4' + freeApps.toString());
function readFile () {
var content = '';
fs.readFile(__dirname + "/public/json/" + "test.json", function(err, data) {
if (err) {
console.error(err);
return '';
}
console.log('1' + data.toString());
content = data;
console.log('2' + content.toString());
});
console.log('3' + content.toString());
return content;
}
返回
3
4
1{"application":[{"name":"test","test":"name"}]}
2{"application":[{"name":"test","test":"name"}]}
其中字母是 test.json 内容。如何正确读取文件内容并在函数内处理它? 我成功获取了 1 处的内容并转发到另一个函数,但不在该函数内,这是为什么?
最佳答案
如果您询问为什么您的 readFile
函数不返回 content
(这很可能是因为此代码已关闭),那是因为 return 语句在文件被调用之前被调用。读完。这称为“异步”函数,因为它与代码的其余部分并行运行。
因此,您无法像此处那样重新分配内容
。相反,您需要从回调(控制台日志 1 和 2 所在的位置)中调用函数和/或使用 Promises,这是一种用于处理异步行为的高级技术。
关于文件读取后 JavaScript 函数返回为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39777698/