0

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

大家好,当我做 .query(); 时,我需要 mysql js 的帮助;回调总是延迟并给我空结果,但如果我放计时器,它会给我结果,我们如何解决这个问题......在他们的文档中说“你在连接上调用的每个方法都排队并按顺序执行。 " 所以他们使用异步我相信,有人知道如何在将数据发送回客户端之前等待结果吗?我尝试了 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;
          }
        );
4

1 回答 1

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)
        }
    }
于 2019-01-31T08:22:06.917 回答