首页 > 解决方案 > 如何使箭头功能异步?

问题描述

我有以下代码检查文件是否存在,如果存在,则解析其中的 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 (err) => { ...声明然后使用 dbObj = await processDatabaseFile(dbPath),但它会在 if-else 和分号周围出现错误,并且缺少括号。

反馈表示赞赏。

编辑:关于添加异步等待的错误。我使用的是 VSCode,结果发现 ESLint 和 JSHint 相互冲突。

标签: javascriptnode.jsasync-await

解决方案


您可以使用以下语法使粗箭头函数异步。

const asyncFunc = async () => {
    const result = await someAsyncFunc();
}

推荐阅读