0

今天我收到了这么多 Promise { <pending > } 我不知道为什么,所以我尝试console.log()了一些事情,我发现 getData() 在 queryDatabase() 之前返回,有人可以解释我为什么,以及什么我可以修复它吗?我需要在 getData() 之前返回 queryDatabase() 数据,因此承诺不会返回待处理,这是我的代码:

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')
            })
        });
    })
}
4

1 回答 1

1

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

于 2021-04-13T01:41:52.783 回答