如何 return 来自 readFileAsync 的数据

How to return Data from readFileAsync

我有一个函数需要从文件中读取,然后使用 JSON.parse(string) 将其转换为 json 对象,最后 return 将其用于其他地方。

此对象使用 JSON.stringify():

写入 txt 文件
let User = {
    Username:"#",
    Password:"#",
    FilePaths:[
        {Year:'#', Month:'#', FileName:'#'}
    ]
}

写作很好,我的问题是阅读, 这是我的代码:

const readFileAsync = promisify(fs.readFile);
async function GetUserData(User) {
    const Read = async () => {
        return await (await readFileAsync('UserData\'+User.Username+'\UserData.txt')).toString();        
    }    
    return Read().then(data=>{return JSON.parse(data)})
}

console.log(GetUserData(User));

我得到的结果是:

Promise {[[PromiseState]]: 'pending', [[PromiseResult]]: undefined}

我怎样才能使这项工作如此

在这种情况下,GetUserData returns 一个承诺,因此您需要使用 .then 来获取数据一旦解决。

GetUserData(User).then(data => {
  // do something with data
});

或者,fs 有一个你可以使用的同步函数,而不是依赖于 readFile(它是异步的),使用 readFileSync。用法如下:

function GetUserData(User) {
    const data = fs.readFileSync('UserData\'+User.Username+'\UserData.txt').toString();

    return JSON.parse(data);
}

console.log(GetUserData(User));