Fil*_*zzi 0 javascript asynchronous callback node.js
我开始使用异步编程,我正在创建一个nodejs应用程序,我在一些文件中切片代码:index.js,ctlUser.js,DAO.js等... .. Index.js是它需要的主文件ctlUser和ctlUser需要DAO.js ... DAO连接数据库并执行查询...
抽象,我的结构是这样的......
Index.js
var ctlUser = require('./ctlUser.js');
var username = ctlUser.getUserName('1');
console.log("Return from ctlUser" + username);
Run Code Online (Sandbox Code Playgroud)
ctlUser.js
var DAO = require('./DAO.js');
var getUserName = function(id){
var userName = DAO.executeQuery("SELECT username FROM tbUsers WHERE id = " + id );
console.log(Return from DAO = userName);
return username;
}
Run Code Online (Sandbox Code Playgroud)
DAO.js在这里一切都很好......
var mysql = require('mysql');
var executeQuery = function(query) {
var connection = mysql.createConnection({
host : SERVER,
user : USER,
password : PASSWORD,
database : DATABASE
});
connection.connect();
connection.query(query, function(err, rows, fields) {
if (err) throw err;
connection.end();
console.log("Here in DAO: " + rows[0].username);
return rows[0].username;
});
};
Run Code Online (Sandbox Code Playgroud)
输出$ node index.js是:
Return of ctlUser: undefined
Return of DAO: undefined
Here in DAO: Filipe Tagliacozzi
Run Code Online (Sandbox Code Playgroud)
我抽象所有模块导出everithing工作正常固定变量,但数据库响应不..如何在此结构中实现回调,以将userName带到index.js?
更改DAO.js模块中的executeQuery函数以使用回调:
var executeQuery = function(query,callback) {
var connection = mysql.createConnection({
host : SERVER,
user : USER,
password : PASSWORD,
database : DATABASE
});
connection.connect();
connection.query(query, function(err, rows, fields) {
if (err) throw err;
connection.end();
console.log("Here in DAO: " + rows[0].username);
callback(rows[0].username);
});
};
Run Code Online (Sandbox Code Playgroud)
通过ctlUser.js中的getUserName函数链接回调:
var getUserName = function(id,callback){
DAO.executeQuery("SELECT username FROM tbUsers WHERE id = " + id ,function(username){
console.log("Return from DAO =" ,userName);
callback(username);
});
}
Run Code Online (Sandbox Code Playgroud)
然后在index.js中使用它,如下所示:
var ctlUser = require('./ctlUser.js');
ctlUser.getUserName('1',function(username){
console.log("Return from ctlUser" + username);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4348 次 |
| 最近记录: |