刚学习数据库的操作,向mysql发出申请后,会接着执行后面的代码,同时等待数据库的回调。 那么如果发出多个请求,多个回调的执行顺序是啥样的呢?
比如这样的代码
var mysql = require('mysql'); var cnString = require('../sqlConnection.json'); var connection = mysql.createConnection(cnString); connection.connect(); var userAddSql = 'INSERT INTO node_user(id,name,age) VALUES(0,?,?)'; var userAddSql_Params = ["张洒 ' -- " , 55]; //增 add connection.query(userAddSql,userAddSql_Params,function (err, result) { //回调1 }); connection.end();
connection = mysql.createConnection(cnString); connection.connect(); var userAddSql = 'INSERT INTO node_user(id,name,age) VALUES(0,?,?)'; var userAddSql_Params = ["张洒 ' -- " , 55]; //增 add connection.query(userAddSql,userAddSql_Params,function (err, result) { //回调2 }); connection.end();
connection = mysql.createConnection(cnString); connection.connect(); var userAddSql = 'INSERT INTO node_user(id,name,age) VALUES(0,?,?)'; var userAddSql_Params = ["张洒 ' -- " , 55]; //增 add connection.query(userAddSql,userAddSql_Params,function (err, result) { //回调3 }); connection.end();
connection = mysql.createConnection(cnString); connection.connect(); var userAddSql = 'INSERT INTO node_user(id,name,age) VALUES(0,?,?)'; var userAddSql_Params = ["张洒 ' -- " , 55]; //增 add connection.query(userAddSql,userAddSql_Params,function (err, result) { //回调4 }); connection.end();
预想的是,会按照回调1、2、3、4的顺序被执行,因为node是单线程的,回调函数应该按照申请的顺序被回调。 但是实际运行几次后发现,每次四个回调的先后执行顺序完全不一样。 哪个回调先回来都有可能,这是啥原因呢?
怀疑问题出在mysql方面,但是不能确定。
所以想问问大家。