node.js - Node-mysql 中的阻塞行为

标签 node.js node-mysql

我正在使用node.js和node-mysql,我想了解以下内容:

connection.connect(function(err) { if (err) throw err; });
console.log(" beginn insert "+ Date() );
for (var i=0;i<200;i++){
  connection.query('INSERT INTO animals SET ?', {name: "tiger!"});
}
connection.end();
console.log(" end insert " + Date() );

输出始终是“beginn insert”,紧接着是“end insert”,然后只有数据库开始工作。这些node-mysql语句怎么可能看起来是非阻塞的?

谢谢,菲利克斯

最佳答案

Node 本身对于 IO 是非阻塞的,因此此类查询不会阻塞。相反,您需要在查询完成时传递回调函数:

var queries = 0;
connection.query("INSERT INTO animals SET ?", {name: "tiger!"},
function (err) {
    // handle error?
    queries++;
    if (queries == 200) {
        // Last query has finished running
    }
});

关于node.js - Node-mysql 中的阻塞行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27652526/

相关文章:

c++ - 如何抛出异常并在 Node.js 中捕获它?

mysql - 如何在 Mysql 中存储大于 24 小时的时间?

mysql - 无法关闭与 NodeJS 的 mysql 连接

javascript - Node.js 服务请求安全网站

node.js - 使用node-mysql查询db挂起,没有错误

node.js - 在node-mysql中编码

mysql - 如何使用 nodejs 和 pem key 文件连接到 Cloud SQL 实例

javascript - 使用 new Date().toLocaleTimeString() 时获取毫秒

javascript - 在 Javascript 循环内运行 exec()

node.js - 无法访问Zomato开发人员页面