2013-07-25 72 views
0

我有一個for循環,它從MySQL服務器中提取數據。我希望將這四個值放入變量中,以便稍後使用它們。這是我的代碼;出於某種原因,它說thev是不確定的?使用for循環創建變量數組對象

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

@minitech這「可能」是關於「[可能]」(因爲它在技術上是可能的..但是啊,打擾) 。我應該用更嚴格的語言 - 謝謝指出。 – user2246674

回答

1

這裏有很多問題。

  1. thev是當地的create。您不會將create的返回值分配給任何內容,因此它仍不會被定義。

  2. var thev = [];不應該在for循環內。它只會包含一個元素。或者它會,但...

  3. query的回調不僅僅是爲了好玩;這是一個異步調用,並且在您實際從函數返回時沒有發生任何事情。

我只是不使用 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 
}); 
+0

我沒有注意到異步內循環。 – sabithpocker

+0

工作完美...謝謝! – pj409