我不知道这个问题在SO
中是否正确,如果没有告诉我,我会移动它。
我已经习惯Rails
了,我对nodeJS
感兴趣,我想了解non blocking
连接的含义。
这是否意味着与database
存在持久连接? (显式是socket.io
提供了吗?)如果存在大量持久连接,服务器如何处理它们?
顺便说一下,我读到nodeJS
不需要数据库的返回值来完成函数的处理,从而加快了处理速度。是吗?
答案 0 :(得分:1)
非阻塞是指I / O,例如访问硬盘驱动器上的文件,查询数据库。如果你们每次使用像jQuery这样的东西都会这样想:
$.post('file.php', function (results) {
// do something with 'results', which was sent back to use from 'file.php'
console.log("Results returned...");
}, "json");
console.log ("End!");
现在在客户端,javascript将发出此POST请求,但它不会等待它返回结果。控制台将输出“结束!”在它输出“返回的结果......”之前。 Node很像那样。你传递了许多匿名函数作为回调然后响应。这是一个数据库示例(node-mysql):
connection.query('SELECT * FROM table1', function(error, rows) {
if( error ) throw error;
// do something with rows (an array)
});
查询完成后,将调用传递给connection.query方法的'function(error,rows)'。就像上面的jQuery $ .post示例一样,它不会停止并等待。这允许节点在此期间做其他事情。
我希望我解释得很好。我曾经不喜欢javascript,jQuery治愈了我,现在节点是我梦寐以求的。 :d