我发现了ExpressJS guide如下:异步在Express中如何工作?
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'dbuser',
password : 's3kreee7'
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
connection.end();
这难道不应该是不好的做法?我看到它的方式,连接可能会在执行查询之前结束。这不会给出错误吗?
当然,但回调不会有发生 - 这将发生在'结束'后 - 所以我会认为这是不好的代码 – Soren
没有关系,如果回调没有发生,你打电话'end()'当你完成SQL操作时,它不会阻止你以前的查询运行。无论是否你认为这个糟糕的代码取决于你,但它不会像问题中提到的那样“给出一个错误”。 – Drown
那么如果回调代码创建一个新的查询会发生什么? – Soren