调用异步等待内部promise问题



我有一个脚本,它读取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仅在异步函数中有效

当我这样使用它时,它的效果很好

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

所以我认为这是因为它的内在承诺。

这里不必使用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)
})

最新更新