1
的問題,我相信的,是地方aroung異步流和不正確的並行工作對我來說...問題與async.parallel
所以,我有兩個功能。第一個函數是更新數據庫變量(主機,名稱,登錄名和密碼),它從leveldb獲取這些值。這裏的代碼:
function refreshDbValues (whendone) {
async.parallel([
function (callback) {
db.get('dbhost', function (err, value) {
if(err) callback(err);
dbhost = value;
console.log('host ' + dbhost);
callback(null);
});
},
function (callback) {
db.get('dbname', function (err, value) {
if(err) callback(err);
dbname = value;
callback(null);
});
},
function (callback) {
db.get('dblogin', function (err, value) {
if(err) callback(err);
dblogin = value;
console.log('user ' + dblogin);
callback(null);
});
},
function (callback) {
db.get('dbpass', function (err, value) {
if(err) callback(err);
dbpass = value;
callback(null);
});
},
], whendone(null));
}
而第二個功能是從路由器服務mysql查詢。在第一個功能完成後,它必須執行主代碼。代碼:
function handle_database(query, callback) {
refreshDbValues(function (err) {
if(err) callback(err);
console.log('just for test');
var pool = mysql.createPool({
connectionLimit : 100, //important
host : dbhost,
user : dblogin,
password : dbpass,
database : dbname,
debug : false,
multipleStatements: true
});
pool.getConnection(function(err,connection){
if (err) {
if(typeof(connection) != 'undefined')
connection.release();
return callback(err);
}
connection.query(query,function (err, rows){
connection.release();
if(!err) return callback(null, rows);
else console.log(err);
});
connection.on('error', function(err) {
return callback("Error in connection database");
});
});
});
}
我的輸出如下:
just for test
host ***
user ***
,我是等待「只是爲了測試」來最後。我的邏輯錯了嗎,還是代碼有問題?任何幫助的問候。
嘿,那麼容易))非常感謝 – Lazyexpert