我有以下代码,用于检查文件是否存在,如果存在,则解析其中的JSON数据:
fs.access(dbPath, (err) => {
if (err) throw err
else{
console.log('Database found. Processing data.');
dbObj = processDatabaseFile(dbPath);
console.log('checkonstartup: '+dbObj);
return;
}
});
这里是processDatabaseFile函数:
function processDatabaseFile(path){
fs.readFile(path, (err, data) =>{
if (err) throw err;
let jsonData = JSON.parse(data);
return jsonData;
})
}
我的问题在于当调用fs.access函数时,它比processDatabaseFile(dbPath)
返回更快。
例如,我想使用async await,但我不知道该如何操作。
尝试将async (err) => { ...
声明放置后,使用dbObj = await processDatabaseFile(dbPath)
,但出现了关于if-else、分号和缺少括号的错误。
感谢反馈。
编辑: 关于添加async-await时出现的错误。我使用的是VSCode,结果发现ESLint和JSHint互相冲突。
await someAsyncFunc()
中的 someAsyncFunc() 必须是真正的异步函数吗? - VikingPingvinawait
的值可以是一个值,await 2 + 2
将等于4
。但是如果someAsyncFunc()
是基于回调的并且没有返回任何内容,则await someAsyncFunc()
将只是未定义的。您需要先将其转换为Promise。 - mbojkosomeAsyncFunc()
返回一个 Promise。但是,如果someAsyncFunc()
不是异步的,我认为使用await
没有意义。 - bjupreti