使用readFile将文件读入数组时如何修复“未定义”数组

黛安娜

我正在尝试将文本文件中的文件名列表加载到js数组中。

我尝试使用fs模块执行此操作,虽然我可以在readFile函数中成功打印数组,但是如果我返回数组并尝试在外部打印它,则无法这样做。

const fs = require("fs");
function parseFileList(fileToRead){

    fs.readFile(fileToRead, 'utf8', (err, data) => {
        if (err) throw err;
        const textByLine = data.split("\n").slice(0,-1);
        return textByLine;
    });
}

const refList = parseFileList(argv.ref);
console.log(refList);

文件中的文件名应以字符串数组形式输出。但是现在它只是打印出来undefined我认为这与readFile是异步的事实有关,但是我不确定如何解决它。

阿迪尔·利亚卡特(Adil liaqat)

那是因为您在回调中得到响应。如果要使此功能正常工作,则必须将其转换为Promise:

function parseFileList(fileToRead){
    return new Promise((resolve, reject) => {
     fs.readFile(fileToRead, 'utf8', (err, data) => {
        if (err) reject(err);
        const textByLine = data.split("\n").slice(0,-1);
        return resolve(textByLine);
     });
    })

}

现在您可以像这样使用它:

parseFileList(filename).then(data => console.log(data))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章