我發現了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