socket.on('sumDoughnut', function(data){
var totalSum = 0;
mysqlConnection.query('SELECT SUM(value) AS Total FROM doughnut', function(err, row, results){
if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
totalSum = row[0].Total;
console.log("here it is " + totalSum);
});
console.log(totalSum + " totalSum")
}
答案 0 :(得分:1)
正如评论中所提到的,范围是正确的。问题是对console.log
的调用应该在回调中,而不是在外面。
如果你没有把它放在回调中,console.log
调用将在数据库调用后立即执行,而不是等待数据库的响应。一旦DB返回值,就会触发回调。
这将解决它:
socket.on('sumDoughnut', function(data){
var totalSum = 0;
mysqlConnection.query('SELECT SUM(value) AS Total FROM doughnut', function(err, row, results){
if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
totalSum = row[0].Total;
console.log(totalSum + " totalSum")
});
}