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