CNode

如何设定某项完成之后再载入网页

问答
Sshetz163发布于11 年前最后回复11 年前4 回复3337 浏览0 收藏

才接触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)

T
TossShinHwa#1·11 年前

你需要先了解 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
            });
        });
    });
});
D
DavidCai1993#2·11 年前

在事情都做完时再载入页面 ==> 即在回调的最深处 res.render()

S
shetz163#3·11 年前
引用 TossShinHwa你需要先了解 javascript 的回调机制.

@TossShinHwa 谢谢了 看来我真的需要再回头仔仔细细的再读读javascript的课本了

J
jerrywu55#4·11 年前

可以去了解下 async , Promise

参与回复
登录后即可参与回复。登录