这种代码该怎么操作?原谅我是小白
发布于 8 年前 作者 hellojiakewei 5642 次预览 最后一次回复是 8 年前 来自 问答
server.get('/',(req,res)=>{
var num;
var users;
var hrefs;
db.query(`SELECT COUNT(*) FROM index_table `,(err,data)=>{
num=data[0];
})
db.query(`SELECT username FROM index_table `,(err,data)=>{
users=data[0];
})
db.query(`SELECT href FROM index_table `,(err,data)=>{
hrefs=data[0];
})
var datatotal={
'num':num,
'users':users,
'hrefs':hrefs
}
console.log(datatotal.num);
console.log(datatotal.users)
console.log(datatotal.hrefs)
res.render('index.ejs',{datatotal});
});
当访问主页的时候我想从数据 取3条数据 但是打印出来的时候是undefined 我i知道是异步的原因,我这种代码还可以怎么写呢?
21 回复
不用callback的情况下
最原始的就是 一层层的callback嵌套 或者用async库,或者Promise,或者async/await
@imhered promise 怎么改写啊 我改了半天也没改对 对promise 懵懵懂懂的
用promise,或者async框架
@HuarenYu 我也知道用这些 可是不会用啊
想了想, 还是给你推荐些promise, generator, async/await的资料吧 http://es6.ruanyifeng.com/#docs/promise http://es6.ruanyifeng.com/#docs/generator http://es6.ruanyifeng.com/#docs/async http://es6.ruanyifeng.com/#docs/generator-async
还有从你的代码看,你这3个查询应该一次就能查出来,不明白为什么要分开来查。 async的写法就把上面的query1().then… 整一串换成
@yinxin630 很感谢 你们这些 无私帮助别人的人 我也想帮助别人 可惜 刚入行能力还不行 再次感谢
@imhered 感谢 昨晚好好研究了一下 加上你们的代码 明白了很多 谢谢
@foora 感谢您的帮助 让我明白了很多 非常感谢 这三个查询 是我举得例子 祝您工作顺利;身体健康
@foora 问了问我们公司java 说得用两条 一条语句怎么查询啊
@hellojiakewei 不好意思,没看清楚第一是count(*),是应该两条的,第2和第3可以合并在一起查
@foora 看了你的建议 我专门打电话给了我的一个java 同学 然后给我讲了半天分组查询 存储过程 然后告诉我两条 sql。。。。
想玩 node 先看看 callback hell 是怎么回事儿,然后再进阶到 promise,最后上 async/await ,新手的话,理解透彻得花费好些时间吧
来来来,给你上个co版本,看起来你那里是可以并行查询的,是不是要比你的看起来优雅多了,然后你自己根据业务情况改改吧,有问题再提哦
没有那么复杂,所有sql语句写在一个字符串或者使用存储过程 自豪地采用 CNodeJS ionic
那个是sql层面的东西了,这里只是举例
@fantasticsoul 太猛了大神,我现在还有点理解不了这么深的东西 感觉理解起来有点费力,能不能加个好友什么的 以后向你请教下啊 我现在就遇到了一个困难,我正在做第三方QQ 登陆接口 ,可是本地开发环境下 怎么搞呢 ?我把host 文件改了 想把我的localhost 地址映射出去 ,去申请QQ 互联。
Can you feel the power from js ? hahahahahahahahahhaah
async version