如何将匿名函数内的值分配给全局变量或其范围之外的变量。例如,下面的例子。 console.log(rows)
返回正确的数据,而console.log(result)
则返回undefined
var result;
this.query(sql).execute(function(error, rows) {
console.log( rows )
result = rows;
});
console.log( result );
答案 0 :(得分:8)
Node.js是事件驱动的,这意味着大多数函数都是异步的。 execute
函数不返回任何值,因为“返回”值在声明为第一个参数的匿名函数中,只有在执行了查询并且返回了一个值时才会调用该函数。数据库。所以你的result
变量不包含任何值,因为还没有任何东西可以返回。
** 编辑 **
即使在您进行编辑之后,记录变量result
的行也会在之前执行 rows
,因为匿名函数只会执行稍后,当查询完成时。
答案 1 :(得分:0)
.execute
返回什么?它可能只是处理.query
返回的项而不返回数组