为什么我的异步js/nodejs函数跳过了一大部分?

t0ybt7op  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(307)

因此,我调用以下函数:

async function sql_func(){
    console.log('anothertest')
    async () => {
        console.log('third test')
        try {
            await sql.connect('heres the connection data')
            const result = await sql.query`heres a query`
            console.log(result) 
        } catch(err) {
            console.log(err)
        }
    }
}

第一个控制台日志另一个测试被记录,但是异步()中的部分=>{}被完全跳过。调试时,我看到它只是从async()直接跳到右括号}
我做错了什么?

camsedfj

camsedfj1#

async function sql_func() {
    console.log('anothertest')
    await sql.connect('heres the connection data')
    const result = await sql.query`heres a query`
    console.log(result)
    return result
}

在您的示例中,不需要定义其他函数: async () => { } . 从未调用此函数。异步函数还处理所有承诺,并在其中一个承诺被拒绝时拒绝。您可以在主功能级别执行的捕获:

const result = await sql_func().catch(error => // do something)
// Or with try / catch

如果需要不同的错误消息(例如:隐藏真实错误/堆栈跟踪):

async function sql_func() {
    console.log('anothertest')

    await sql.connect('heres the connection data').catch(error =>
        Promise.reject('DB Connection error')
    )

    const result = await sql.query(`heres a query`).catch(error =>
        Promise.reject('Query failed')
    )

    console.log(result)
    return result
}

相关问题