有没有办法同步读取文本文件(在 JS 节点中)?

Is there a way to read a text file synchronously (in JS node)?

这是我的示例代码:

var dicWords = []
function ReadFile()
{
    var fs = require('fs')
    fs.readFile('words_alpha_sorted.txt', (err, data) =>{
        if (err){
            console.log(err);
            return;
        }
        data = String(data)
        dicWords = data.split(/\r?\n/);
    })
}
function DoStuffWithFile();
{
    //do stuff with the variable dicWords
}
function main()
{
    ReadFile();
    DoStuffWithFile();
}

我怎样才能读取文件,等待它完全读取,然后执行其余代码,以便在调用 DoStuffWithFile 时 dicWords 不是空数组?使用 JS(节点)。我想从主函数调用 DoStuffWithFile,而不是 ReadFile。注意-:主要功能实际上不是主要功能,但它是文件管理发生的地方。

您可以为此使用 readFileSync function

    const data = fs.readFileSync('words_alpha_sorted.txt');

但是异步函数几乎总是更好的解决方案。同步方法停止 Javascript 执行一段未知的时间(与 JS 代码相比,它似乎是永恒的),而异步文件系统函数是 运行 并行的。

您可以利用 async/await-friendly Promise 方法来做:

var dicWords = []
async function ReadFile()
{
    var fs = require('fs').promises
    let data = await fs.readFile('words_alpha_sorted.txt')
    data = String(data)
    dicWords = data.split(/\r?\n/);
}
function DoStuffWithFile();
{
    //do stuff with the variable dicWords
}
async function main()
{
    await ReadFile();
    DoStuffWithFile();
}