【问题标题】:Calling a function which calls Async mysql调用调用异步mysql的函数
【发布时间】:2019-07-09 08:40:37
【问题描述】:

我想调用一个使用 npm-mysql .query 函数执行查询的函数。问题是 .query 是异步的,所以我得到一个返回值 = undefined ,然后 mysql.query 完成执行。 我尝试使用 promises 但无法将返回值与 mysql.query 结果同步。

  1. 我不想使用sync-mysql。
  2. 我希望它位于所示的包装函数中。

function mysql_select(query) { var json_result mysql_connnection.query(query, function (err, result) { if (err) throw err json_result = JSON.stringify(result) }) return json_result }

例如我想这样调用这个函数:

console.log(mysql_select("SELECT * FROM table"))

并且不会得到未定义的结果 我检查了查询,它正确返回了数据,但是函数返回了 json_result。

【问题讨论】:

    标签: mysql node.js asynchronous


    【解决方案1】:

    你可能想看看 Promises:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

    function mysql_select(query)
    {
        return new Promise(function(resolve, reject) {
            mysql_connnection.query(query, function (err, result) 
            {
                if (err) {
                    reject(err);
                    return;
                }
                resolve(JSON.stringify(result));
            })
    
        })
    }
    
    ;(async function() {
        console.log(await mysql_select('SELECT * FROM table'));
    })();

    【讨论】:

    • 谢谢,工作完美!我不知道我可以返回一个承诺,这个链接足够有用!
    猜你喜欢
    • 1970-01-01
    • 2012-07-25
    • 2013-03-28
    • 2018-12-13
    • 2013-07-12
    • 2015-01-22
    • 2019-01-20
    • 2020-05-17
    相关资源
    最近更新 更多