我有一个脚本,它读取 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/