鉴于 node.js 的异步性质,我在弄清楚变量“传递”时遇到了一些麻烦(我知道这不是正确的术语,我会解释)。

请查看以下内容:

connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
  if(err) {
    throw err;
  }
  var solution = rows[0].solution;
});

res.render('index', { title: solution });

可以想象,我得到了一个 reference error, solution is not defined
这是因为res.render 是在从mysql 服务器获取解决方案之前完成的。

定义解决方案后,如何使其呈现页面?我知道这是非常小而愚蠢的事情,并且确实是 Node 的核心,但请帮助我理解。

最佳答案

connection.query 的第二个参数是在数据库返回后运行的回调。为什么不将 res.render 行放在回调中?这样,在您准备好数据之前,不会调用渲染函数。

connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
  if(err) throw err;
  var solution = rows[0].solution;
  res.render('index', { title: solution });
});

当您第一次开始使用 Node.js 时,回调可能会有点棘手。您只需要考虑需要发生的步骤以及哪些是异步的。从那里你只需要确保你的回调允许过程继续。

关于node.js - NodeJS 获取和传递变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12356286/

10-10 04:41