node.js - 在 Promise 中调用 async wait 问题

标签 node.js

我有一个脚本,它读取 CSV 文件,将其转换为 json,然后逐行读取它以检查数据库中是否已有数据。到目前为止,我可以读取数据,但我的问题是对我的数据库的调用。因为我想使用等待数据库查询返回,所以我将其包装在异步函数中。

const processFile = async (file) => {
    var rowcount = 0
    csv()
        .fromFile(file)
        .subscribe(json => { 
            return new Promise((resolve, reject) => {
                console.log(rowcount++ + ' ' + recCount);
                console.log('recProcessed', {rowcount, recCount})
                var result = await db.checkFarmMaster(json.APN)
                console.log(result.recordset[0].RecCount)
                resolve();               
        })
        .then(() => {
            console.log(recCount)              
        })
        .catch(err => {
            console.log(err.message)             
        })
        })}

但这会产生以下错误

var result = await db.checkFarmMaster(json.APN) SyntaxError: await is only valid in async function

当我像这样使用它时,它工作得很好

const test = async (p_APN) => {
var result = await db.checkFarmMaster(p_APN)
console.log(result.recordset[0].RecCount)
}

所以我认为这是因为它包含在一个 promise 中。

最佳答案

这里不必使用Promise构造函数,只需返回async函数

    .subscribe(async json => { 
        console.log(rowcount++ + ' ' + recCount);
        console.log('recProcessed', {rowcount, recCount})
        var result = await db.checkFarmMaster(json.APN)
        console.log(result.recordset[0].RecCount)
    })

关于node.js - 在 Promise 中调用 async wait 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53526752/

相关文章:

node.js - 为什么这些 promise 的拒绝是全局性的?

javascript 未在 Express/Node 应用程序中加载

windows - 使用子进程 NodeJS 运行 exe 文件

node.js - Node 依赖项不会安装在 Openshift 上

javascript - Mongodb 按数组排序

node.js - 从 hapi-js 路由自动生成 swagger.yaml

javascript - 在 Node Js 中使用不同的参数连续运行一个函数

node.js - Nodemon 说它重新启动了我的服务器,但它没有

javascript - html内容在iframe中呈现,但不在div中呈现

node.js - imagemagick 平铺图像与坐标