使用for循环创建变量数组对象

时间:2013-07-25 23:13:38

标签: javascript mysql node.js for-loop

我有一个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]);

我很感激有关此问题的任何建议。

1 个答案:

答案 0 :(得分:1)

这里有很多问题。

  1. thev位于create的本地。您没有将create的返回值分配给任何内容,因此它仍然不会被定义。

  2. var thev = [];不应位于for循环内。它最终只包含一个元素。或者它会,但......

  3. query的回调不只是为了好玩;这是一个异步调用,并且在您实际从函数返回时100%确定没有发生过。

  4. 我只想使用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
    });
    
相关问题