【发布时间】:2021-04-13 01:20:32
【问题描述】:
今天我收到了这么多 Promise { 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')
})
});
})
}
【问题讨论】:
-
那么不要使用 Promise。返回行而不是 Promise。
-
你的
function queryDatabase没有返回任何东西,因为没有return声明 -
你把promise放在getConnection而不是queryDatabase中。
-
不确定您使用的是哪个 mysql 包,但如果它本身不支持 Promise,那么有支持的包。将简化您正在使用的承诺包装
标签: javascript mysql async-await mysqljs