如何将匿名函数内的值赋给全局变量或其范围外的变量。例如,下面的例子。 console.log(rows)
返回正确的数据,而console.log(result)
返回未定义匿名函数范围混淆
var result;
this.query(sql).execute(function(error, rows) {
console.log(rows)
result = rows;
});
console.log(result);
如何将匿名函数内的值赋给全局变量或其范围外的变量。例如,下面的例子。 console.log(rows)
返回正确的数据,而console.log(result)
返回未定义匿名函数范围混淆
var result;
this.query(sql).execute(function(error, rows) {
console.log(rows)
result = rows;
});
console.log(result);
Node.js的是事件驱动的,这意味着大部分功能是异步的。 execute
函数不会返回任何值,因为“返回”值位于声明为第一个参数的匿名函数中,只有在查询已执行并且数据库已返回值时才会调用该函数。所以你的result
变量不包含任何值,因为没有什么可返回的。
** 编辑 **
即使你的编辑,分配rows
它被执行之前,你登录的变量result
行,因为匿名函数只执行后,当查询完成时。
.execute
返回什么?它可能只是处理由.query
返回的项目而不返回数组
更改了示例代码,我复制了不正确的代码。同样的结果。 – HyderA 2011-06-08 02:56:59
它不会改变任何东西。 'result'将不会保留任何值,只是因为匿名函数*异步*执行,意思是*稍后* – 2011-06-08 02:59:06
啊,是的,这是有道理的! – HyderA 2011-06-08 03:01:26