【问题标题】:NodeJs + Mysql query execution too late (delays)NodeJs + Mysql 查询执行太晚(延迟)
【发布时间】:2019-01-31 06:34:14
【问题描述】:

NodeJs + Mysql 查询执行太晚(延迟) https://github.com/mysqljs/mysql

大家好,我需要 mysql js 方面的帮助,当我执行 .query();回调总是延迟并给我空结果,但如果我放计时器,它会给我结果,我们如何解决这个问题......在他们的文档中说“你在连接上调用的每个方法都排队并按顺序执行。 "所以他们使用异步我相信,有人知道如何在将数据发送回客户端之前等待结果吗?我尝试了 Promise、Async/Await,但他们使用其他东西来存储他们的查询..

con.query(`SELECT * FROM users`,
          function(err, data) {
            // this callback always delays 4 seconds, this callback executes straight away without waiting.
            return data;
          }
        );

【问题讨论】:

    标签: javascript node.js mysqljs


    【解决方案1】:

    有几种方法可以处理这种情况,我建议您将查询包装在 Promise 中,如下所示:

        function getUsers() {
            return new Promise((resolve, reject)=> {
                con.query(`SELECT * FROM users`,
                function(err, data) {
                    if(err) {
                        return reject(err);
                    }
                    resolve(data);
                });
            })
        }
    
        //usage 
    
        async function(req, res) {
            try {
                const users = await getUsers();
                res.send(users);
            } catch(error) {
                res.status(500).send(error)
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-05
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      相关资源
      最近更新 更多