node.js全局变量有问题

时间:2012-12-02 11:36:17

标签: javascript node.js

我不太了解javascript。我无法定义全局变量。

var data = 'empty';

connection.query('SELECT * FROM deneme',function(err, rows, fields){
    if (err) throw err;
    data = rows;
});

console.log(data);

通常,控制台需要返回行数据,但它返回'empty'。如何从函数内部查询行?如何定义全局变量?

1 个答案:

答案 0 :(得分:1)

它不起作用的原因是因为console.log在异步代码块之外。基本上发生的事情就是:

  1. data设置为empty;
  2. connection发出数据库请求;
  3. console.log点火(此时dataempty);
  4. 收到数据库回复;
  5. 回调火灾;
  6. data设置为rows
  7. 因此,为了得到你想要的东西,只需将console.log语句放在异步块代码中:

    var data = 'empty';
    
    connection.query('SELECT * FROM deneme',function(err, rows, fields){
        if (err) throw err;
        data = rows;
        console.log(data);
    });