如何设定某项完成之后再载入网页
才接触node.js 想做个相册浏览的界面 用的是mysql 然后从mysql中读取数据赋值给页面 但是赋予这个图片页面的值却是上一个图片页面的值 猜测是因为还没有将mysql查询到的值赋予页面 就先执行了res.render 要怎么样才能先将查询执行并赋值之后 再执行res.render
router.get('/', function(req, res, next) {
pool.getConnection(function(err, connection) {
connection.query( 'SELECT * FROM ' + req.query.season+ ' where id= ' + req.query.id + ';', function(err, result) {
if(err) console.log("POOL ==> " + err);
detail = result[0];
connection.release();
});
});
var id = req.query.id - 0;
var left = detail.left;
var right = detail.right;
res.render('showboard', {
title: req.query.season,
season : req.query.season ,
id : id,
left : left,
right : right
});
});
4 回复
你需要先了解 javascript 的回调机制.
router.get('/', function(req, res, next) {
pool.getConnection(function(err, connection) {
connection.query( 'SELECT * FROM ' + req.query.season+ ' where id= ' + req.query.id + ';', function(err, result) {
if(err) console.log("POOL ==> " + err);
detail = result[0];
connection.release();
var id = req.query.id - 0;
var left = detail.left;
var right = detail.right;
res.render('showboard', {
title: req.query.season,
season : req.query.season ,
id : id,
left : left,
right : right
});
});
});
});
在事情都做完时再载入页面 ==> 即在回调的最深处 res.render()
@TossShinHwa 谢谢了 看来我真的需要再回头仔仔细细的再读读javascript的课本了
可以去了解下 async , Promise