如何 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));
我有一个函数需要从文件中读取,然后使用 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));