NodeJs:在mssql'done'发射器中等待

问题描述 投票:0回答:2

我正在使用'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
})

任何人都可以在这里提供我的语法帮助吗?谢谢!

javascript sql syntax async-await
2个回答
0
投票

您需要使用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
})

0
投票

尝试制作匿名功能async您也可以创建匿名函数async

request.on('done', async(result) => {
        await Promise.all(tasks);
    })
© www.soinside.com 2019 - 2024. All rights reserved.