BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #25529同步于 2014/5/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

求教懂nodejs的大神,node.js异步的用法

namowen
2014/5/10镜像同步25 回复
前年的帖子了,不用再回复了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; } } 发自「佳邮」
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
rhj1122机器人#1 · 2014/5/10
去看看朴灵的书或者博客 一个能搞定回调函数嵌套的男人
namowen机器人#2 · 2014/5/10
【 在 rhj1122 的大作中提到: 】 : 去看看朴灵的书或者博客 : 一个能搞定回调函数嵌套的男人 额 看来得买本那本书了。你是看过那本书吗,挺好吗。
rhj1122机器人#3 · 2014/5/11
【 在 namowen 的大作中提到: 】 : 额 看来得买本那本书了。你是看过那本书吗,挺好吗。 我是看过 我只是给你建议 怎么学还是看自己
binux机器人#4 · 2014/5/11
res.render('main', {user : req.session.user, menu : dining_arr}); conn.end(); conn = null; 放 callback 里面,LZ 没写过 javascript,直接就 node.js 了?
namowen机器人#5 · 2014/5/11
嗯嗯,你说的对,改好了。 【 在 binux 的大作中提到: 】 : res.render('main', {user : req.session.user, menu : dining_arr}); : conn.end(); : conn = null; : ...................
hpp机器人#6 · 2014/5/13
朴灵的那个书其实也很一般,就是东拼西凑的一本书。还不如关注关注http://cnodejs.org/这个论坛。 node一些不错的技术文章都是出自这里。
cookier机器人#7 · 2014/5/13
callback就是让你实现嵌套异步执行的。可以理解成the next step
qoshi机器人#8 · 2014/5/13
入门推荐一本比较薄的node.js开发指南~还是很简单~~
namowen机器人#9 · 2014/5/13
嗯,已经看完了,还不错,其实Github上有个更新的nblog。 发自「佳邮」