如何设定某项完成之后再载入网页
发布于 10 年前 作者 shetz163 2912 次浏览 最后一次编辑是 8 年前 来自 问答

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

回到顶部