javascript - 从 Javascript 中的回调函数获取变量

标签 javascript mysql node.js scope callback

所以我在 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/

相关文章:

javascript - 检查处理程序事件内的值复选框

php - 拉维尔新星 : Storing the foreign key of the related file record (that contains the file path)

c# - 我无法为 mysql 应用自动增量

MySQL最大字符长度存储

Linux Ubuntu 14.04 在 1 台机器 1 个 ip 上的 2 个不同的 Web 服务器上运行 2 个网站

javascript - 获取日期时刻时区的时区

javascript - d3.js 图表不考虑边距

javascript - 为什么我的某些选项卡会导致我的内容稍微向右移动?

javascript - 包装回调 API 并监听错误?

node.js - Jade with Express - ReferenceError : window is not defined