我有一个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]);
我很感激有关此问题的任何建议。
答案 0 :(得分:1)
这里有很多问题。
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
});