JavaScript/node.js:尝试访问某个函数之外的对象属性时获取 NULL
Posted
技术标签:
【中文标题】JavaScript/node.js:尝试访问某个函数之外的对象属性时获取 NULL【英文标题】:JavaScript/node.js: Getting NULL when trying to access an object's property outside a certain function 【发布时间】: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?
【问题讨论】:
如果Request
是异步的,它将在自己的时间内完成,在console.log()
之后调用setMyData()
。相关:Why is my variable unaltered after I modify it inside of a function?
【参考方案1】:
当您运行该代码时,执行顺序将是
var date = new DBData()
console.log(date.getMyData()) // null at this point
// end of execution
函数 executeStatement() 被定义,但它没有立即执行。当您调用它时,它可能会在稍后执行,此时它将填充您的“var date”,因此当您在回调中使用 console.log(date.getMydata()) 时,它将正确显示正确的数据执行语句()。
【讨论】:
以上是关于JavaScript/node.js:尝试访问某个函数之外的对象属性时获取 NULL的主要内容,如果未能解决你的问题,请参考以下文章
javascript node.js访问postgresql数据库
如何在 Javascript/Node.js 中访问函数的结果 [重复]
javascript / node.js中的睡眠功能[重复]