【发布时间】:2021-08-07 18:57:12
【问题描述】:
我正在尝试使用fs.readFile() 读取文件,然后在下面的代码中使用结果。读取过程必须是异步的。这是我目前所拥有的:
var file = async () => {
await fs.readFile(__dirname + "/file.json", "utf-8", (err, data) => {
if (err) throw err
return JSON.parse(data)
})
}
console.log(file());
由于某种原因,此代码始终记录 undefined。有什么方法可以在不移动readFile 回调中的console.log 语句的情况下做到这一点?
【问题讨论】:
-
在
file变量上方的代码中是一个函数。具体来说就是函数async () ...。你的代码类似于写async function file () { ... }。也就是说,file是函数的名称 -
那么
async应该去哪里?因为即使console.log(file())也不起作用。 -
async关键字只是让函数返回一个 Promise。所以你的file函数会返回一个 Promise。 -
哦,好的。那么如何异步获取文件数据呢?
-
你应该在记录之前等待结果, const result = await file();控制台日志(结果)
标签: node.js