如何等待 return 的未决承诺

How to wait to pending promises to return

今天我收到了很多 Promise { < pending > } 我不知道为什么,所以我尝试 console.log() 一些事情,我发现 getData() 是 return 在 queryDatabase() 之前,有人可以向我解释为什么吗,我该怎么做才能修复它?我需要在 getData() 之前将 queryDatabase() 数据发送到 return,这样承诺就不会 return 挂起,这是我的代码:

connection 是一个 MySQL 连接池)

async function getData(userID, guildID) {
    this.guildID = guildID ?? null
    this.userID = userID ?? null
    this.data = await queryDatabase({guildID: this.guildID, userID: this.userID})
    console.log('foo 2')
    return this.data;
    
}

function queryDatabase(payload) {
    connection.getConnection((sqlerr, con) => {
        return new Promise((resolve, reject) => {
            con.query(`(My mysql query)`, (err, rows, fields) => {
                if(err) reject(err);
                con.end()
                resolve(rows[0]);
                console.log('foo')
            })
        });
    })
}

感谢 John,我发现了这个问题,我把 promise 放在了 getConnection istead of queryDatabase 中,所以函数没有返回任何东西,谢谢大家的帮助 <3