我有一个for
循环,该循环从MySQL服务器提取数据。我希望将四个值放入变量中,以便以后使用。这是我的代码;由于某种原因,它说thev
是未定义的?
create();
function create(){
for(var i=0;i<4;i++){
var thev=[];
client.query('SELECT curattend FROM table1 WHERE ind=?',[i], function(err,result){
thev[i] = result[0].curattend;
});
}
return thev;
}
console.log(thev[2]);
对于这个问题,我将不胜感激。
最佳答案
这里有很多问题。thev
对create
是本地的。您没有将create
的返回值分配给任何内容,因此仍然无法定义。var thev = [];
不应在for
循环内。最终只会包含一个元素。还是会的,但是……
对query
的回调不仅在这里很有趣。这是一个异步调用,并且在您实际从函数返回时确定100%不会发生。
我只需要使用async库即可:
function range(start, end) {
var result = [];
while(start < end) {
result.push(start);
start++;
}
return result;
}
async.map(range(0, 4), function(i, callback) {
client.query('SELECT curattend FROM table1 WHERE ind = ?', [i], function(err, result) {
if(err) return callback(err);
callback(null, result[0].curattend);
});
}, function(err, thev) {
// Continue
});