我还以为你这是怎么做的if / else块全局(案例3)内的变量。
connection.query(sql, function (err,rows){
//Handle Errors
if(err){
//Log The Error & Die
}
//If Successful - Log Results For Now (Change To Export Results)
else {
//console.log(rows);
foo = rows;
}
});
console.log(foo); // Out: undefined
为什么我不能访问功能之外的变量?
解
那么,这里的问题是了解什么是真正异步之一。 与@AmmarCSE聊天,之后看这里所以这伟大的问题 ,我明白,我的结构我的问题(和我的代码,很明显)不正确。
我试图访问未被定义,直到函数完成运行(SQL查询到远程数据库显然需要更长的时间才能完成,然后运行本地脚本)的变量。 如果我异步地构建我的代码,但是,该变量只被调用一次函数完成 。
这一点,事实证明-是不是变量范围的问题,真的,但变量定义时间 (不知道这是对于其中的变量得到定义脚本的时间正确的术语- CS专业,随意编辑正确的说法)。
无论如何,这是新的代码:
runSQL(function(result){
//Do Whatever you want with the results - they're defined!!
console.log(result);
)};
function runSQL(callback){
connection.query(sql, function (err,rows){
//Handle Errors
if(err){
//Log The Error & Die
}
//If Successful - Log Results For Now (Change To Export Results)
else {
callback(rows);
}
});
}