conn = mysql.createConnection(options);
conn.connect();
var sql = 'select * from member';
for(var i=0; i<3; i++){
(function(){
console.log(i);
conn.query(sql, function(err,result){
console.log('q');
})
})(i)
}
for (var i=0; i<2; i++){
console.log(i)
}
我正在使用npm-mysql。 我预计控制台会显示&#39; 012qqq01&#39;,但实际上我得到了&#39; 01201qqq&#39;。 我很困惑。为什么&#39; conn.querry&#39;最后执行?提前谢谢。
答案 0 :(得分:0)
您有一个记录i
的函数,然后在循环中将查询发送到数据库,并通过另一个循环记录日志。该功能运行。
在此过程中,或者在完成后的某个时间,查询结果将从数据库发回。
当JS引擎忙于运行第一个函数时,它将开始检查指示来自数据库的响应的事件是否已到达。然后它将调用回调函数并记录&#39;。