【问题标题】:JavaScript/node.js: Getting NULL when trying to access an object's property outside a certain functionJavaScript/node.js:尝试访问某个函数之外的对象属性时获取 NULL
【发布时间】:2015-04-07 21:38:59
【问题描述】:

我有下面的代码 sn-p,它实际上是一个对 SQL 数据库进行查询的函数(为此使用了 tedious)。 我想要的只是从数据库中获取数据并在网页上使用它们。 问题是:在 request.on()... 我正在调用 date.setMyData() 函数。仍然在 request.on('row', function(columns)....如果调用 console.log(date.getMyData()) 它成功返回我的数据。

但是,如果尝试在 request.on('row', function(columns) 之外调用 date.getMyData ...我得到 NULL ... 这里有什么我遗漏的吗?

  var date = new DBData();

    function executeStatement() {
  request = new Request(queryString, function(err, rowCount) {
    if (err) {
      console.log(err);
    } else {
     console.log(rowCount + ' rows');
    }
    connection.close();
  });

  request.on('row', function(columns) {

   columns.forEach(function(column) {
      if (column.value === null) {
        console.log('NULL');
      } else {
          date.setMyData(columns);


          //WHY THIS CODE RETURNS MY DATA?
          console.log(date.getMyData()); 

      }
    });
  });

  request.on('done', function(rowCount, more) {
    console.log(rowCount + ' rows returned');
  });

  connection.execSql(request);
}

function DBData(){
    var myData = null;

    this.setMyData = function(obiect){
        myData = obiect;
    };

    this.getMyData = function(){
        return myData;
    };
};

 console.log(date.getMyData()); //WHY I GET 'NULL' HERE?

【问题讨论】:

标签: javascript node.js object null


【解决方案1】:

当您运行该代码时,执行顺序将是

var date = new DBData()
console.log(date.getMyData()) //  null at this point

// end of execution

函数 executeStatement() 被定义,但它没有立即执行。当您调用它时,它可能会在稍后执行,此时它将填充您的“var date”,因此当您在回调中使用 console.log(date.getMydata()) 时,它将正确显示正确的数据执行语句()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2013-01-06
    • 2022-11-28
    • 1970-01-01
    相关资源
    最近更新 更多