如何等待 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
今天我收到了很多 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