所以我在 node.js 中编写了这个 MySQL 选择代码。我对 js 和回调函数很陌生,如何从全局范围内的回调中获取 var uId
?
我尝试这样做是因为我的函数 mysqlselect 必须返回 uId。
function mysqlselect(db, data) {
let sql = `SELECT id, name FROM users WHERE name = '${data.uName}'`;
db.query(sql, function (err, result) {
if (err) throw err;
let uId = result[0].id;
});
// I want to be able to return uId here
};
最佳答案
你不能,因为 db.query
是异步的。
但是,您可以像这样返回一个 Promise
:
function mysqlselect(db, data) {
return new Promise((resolve, reject) => {
let sql = `SELECT id, name FROM users WHERE name = '${data.uName}'`;
db.query(sql, function (err, result) {
if (err) reject(err);
let uId = result[0].id;
resolve(uId);
});
});
};
然后你可以像这样使用:
mysqlselect(db, data).then((id) => console.log(id));
关于javascript - 从 Javascript 中的回调函数获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47737569/