匿名函数范围混淆

如何将匿名函数中的值分配给全局variables或其范围外的variables。 比如下面的例子。 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是事件驱动的,这意味着大部分函数是asynchronous的。 execute函数不会返回任何值,因为“returned”值在声明为第一个参数的匿名函数中,只有当查询已经执行并且数据库已经返回一个值时,才会调用该函数。 所以你的resultvariables不包含任何值,因为没有什么可返回的。

** 编辑 **

即使在编辑之后,在将rows分配给它之前 ,执行loggingvariablesresult rows也会被执行,因为匿名函数只有在查询完成才会执行。

什么.execute返回? 它可能只是处理由.query返回的项目而不返回数组