0
我試圖完成以下(應該是很基本的,我必須失去了一些東西簡單):的Node.js/JavaScript的異步調用背部問題
- 調用具有字符串的函數具有select語句
- 等到DB調用完成和行(或JSON當量)返回
- 填充HTTP對象即可返回
這裏是代碼:
util.js
exports.execute = function(query){
if (connection) {
connection.query(query, function(err, rows, fields) {
if (err) throw err;
console.log("from Util - " + JSON.stringify(rows));
return JSON.stringify(rows);
});
}
};
repo.js
var q = "select * from xxx";
var response;
util.execute(q, function (err, r){
if (err){
throw err;
console.log(err);
}
else {
console.log(r);
res.contentType('application/json');
res.write(r);
res.end();
}
});
我的問題是,雖然util.js中的代碼被調用,我可以在控制檯中看到json,它永遠不會回到repo.js中的匿名回調函數。
我在這裏做錯了什麼?
更新
由於本 我還發現,在同一條直線上的解決方案...這裏是新代碼:
repo.js:
var send_data = function (req, res, r){
res.contentType('application/json');
res.write(r);
res.end();
}
exports.all = function(req, res){
var q = "select * from XXX";
var response;
util.execute(req, res,q, send_data);
};
util.js:
exports.execute = function(req, res, query, callback){
if (connection) {
connection.query(query, function(err, rows, fields) {
if (err) throw err;
callback(req, res, JSON.stringify(rows)) ;
});
}
};