文件读取后 JavaScript 函数返回为空

标签 javascript node.js

这段代码

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/

相关文章:

javascript - 简单弹出模态onclick显示youtube视频简单DOM

javascript - 在 Node.js 中创建 "intermediate"流

javascript - 带有 TypeScript 的 npm 模块

javascript - 重组 Sequelize 结果

node.js - 当已经在对话框中时,如何处理 "cancel"意图?

javascript - 如何仅替换外部函数中的某些 "this"?

javascript - react / react Hook : onChange function to change text is changing for all 3 elements simultaneously instead of just one

javascript - SoundCloud JavaScript API v. 3 SC.stream 错误

javascript - math - 在 Javascript 中获取旋转后的图像尺寸

mysql - rpc 操作中对 mysql 的 socketstream 异步调用