我正在使用'mssql'包来处理sql查询,并在'row'发射器触发时调用异步函数。
当“完成的”发射器点火时,我要等待所有任务完成...这是我遇到的问题。
示例:
const sql = require('mssql')
let tasks = [];
sql.connect(config, err => {
const request = new sql.Request()
request.stream = true;
request.query('select * from theTable')
request.on('row', row => {
task.push( callAsyncFunction(row) );
})
request.on('error', err => {
// Do something
})
request.on('done', result => {
await Promise.all(tasks);
//THIS IS WHERE THE PROBLEM IS:
//SyntaxError: await is only valid in
// async function
})
})
sql.on('error', err => {
// handle error
})
任何人都可以在这里提供我的语法帮助吗?谢谢!
您需要使用async
注释匿名函数:
const sql = require('mssql')
let tasks = [];
sql.connect(config, err => {
const request = new sql.Request()
request.stream = true;
request.query('select * from theTable')
request.on('row', row => {
task.push( callAsyncFunction(row) );
})
request.on('error', err => {
// Do something
})
request.on('done', async (result) => {
await Promise.all(tasks);
//THIS IS WHERE THE PROBLEM IS:
//SyntaxError: await is only valid in
// async function
})
})
sql.on('error', err => {
// handle error
})
尝试制作匿名功能async
您也可以创建匿名函数async
request.on('done', async(result) => {
await Promise.all(tasks);
})