[英]Node.js MySQL connection, queries order and Event Loop
看这个例子
conn.query('SET @v = 1;', (err) => {
conn.query('SELECT @v;', (err, res) => {
// res contains @v = 1 or 2 ?
});
});
conn.query('SET @v = 2;', (err) => {
conn.query('SELECT @v;', (err, res) => {
// res contains @v = 1 or 2 ?
});
});
mysql
/ mysql2
节点软件包是否保证MySQL查询顺序?
是的,mysql和mysql2都保留顺序。 在以下示例中,执行顺序由数字表示
conn.query('query 1', (err) => {
conn.query('query 3', (err, res) => {
});
});
conn.query('query 2', (err) => {
conn.query('query 4', (err, res) => {
});
});
首先,将“查询1”和“查询2”放置到命令队列中。 然后,在“查询1”完成之后,将“查询3”添加到队列中(现在是“查询2,查询3”)。 “查询2”完成后,将调用其回调函数,结果将“查询4”添加到队列中。
这更多是协议属性,而不仅仅是驱动程序的功能。 Mysql协议仅在完全完成后才允许您在当前命令之后发送下一个命令,并且这种方式是“半双工”。 实际并行运行两个sql查询的唯一方法是打开2个单独的连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.