返回信息流前年的帖子了,不用再回复了2333,大神们快去回复新一点的求助帖吧
-----------------
其实我知道nodejs异步的含义,我想知道我的是异步的作用是什么,我现在在写node和mysql搭建的网站,在查询的时候,每次都是没返回查询结果呢,就执行了其他的部分,给我res.render到view上去了,可是需要的变量还没有数据呢,偶尔又能查询到数据。求问这是怎么回事?如果我表达的清楚的话。
晚上回去贴一下代码,诚求指教。
下面是我的一部分代码,updateMenuConfig是用来从数据库里面查询出所有菜单,
showMainViewHandler是把查到的数据render到main.ejs 可是dining_arr里面老是空
var dining_arr = [];
function updateMenuConfig(conn,res,callback) {
conn.query("SELECT * FROM menus", function(err, rows, fields) {
if (err) {
throw err;
o = {code:1, msg:"系统发生非预期错误,请联系管理员"};
res.end(JSON.stringify(o));
return false;
} else if (rows.length == 0) {
o = {code:1, msg:"返回列表为空!"};
res.end(JSON.stringify(o));
return false;
} else {
console.log("row:"+rows);
callback(rows);
}
});
}
function showMainViewHandler(req, res) {
if (checkIden(req, res)) {
var conn = getConnection();
if (dining_arr == null) {
updateMenuConfig(conn,res,function(rows){
for (var i in rows) {
var _o = rows[i];
if (_o["status"] == 1) {
dining_arr.push(_o);
}
};
});
}
//console.log("DINING ARR IS"+dining_arr);
res.render('main', {user : req.session.user, menu : dining_arr});
conn.end();
conn = null;
}
}
发自「佳邮」
这是一条镜像帖。来源:北邮人论坛 / www-technology / #25529同步于 2014/5/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
求教懂nodejs的大神,node.js异步的用法
namowen
2014/5/10镜像同步25 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 rhj1122 的大作中提到: 】
: 去看看朴灵的书或者博客
: 一个能搞定回调函数嵌套的男人
额 看来得买本那本书了。你是看过那本书吗,挺好吗。
res.render('main', {user : req.session.user, menu : dining_arr});
conn.end();
conn = null;
放 callback 里面,LZ 没写过 javascript,直接就 node.js 了?
嗯嗯,你说的对,改好了。
【 在 binux 的大作中提到: 】
: res.render('main', {user : req.session.user, menu : dining_arr});
: conn.end();
: conn = null;
: ...................