2012-12-04 113 views
0

有人可以向我解釋爲什麼數組(定義的外部函數)沒有被函數填充。所以,我可以將其用於其他功能數組沒有得到填充函數

我的代碼:

var points = []; 
var eilutes = []; 
var query = connection.query('SELECT * FROM ping', function(err, eilutes){ 

    //if (err) throw err; 

    for (var i in eilutes){ 
     points.push(eilutes[i]); 
    } 
    console.log(points[1]); //// Result is returned 
    console.log(eilutes[1]); //// Result is returned 
}); 
console.log(points[1]); //// promts: undefined 
console.log(eilutes[1]); //// promts: undefined 
+5

'query()'是異步的,這就是爲什麼有一個回調參數。 – jbabey

+2

另外,'eilutes'是一個數組''''不是對象'{}'。不要使用for-in來迭代數組!改爲使用增量式for循環。 'for(var i = 0; i

+0

我聲明:'eilutes = [];'如何回調數組? – sauletasmiestas

回答

0

因爲查詢是異步的,所以在匿名函數的代碼是不是在任何功能,這是一部分調用。

+0

@jbabey嗯,我想我犯了一個錯誤,沒有顯示完整的代碼。我做了兩個查詢後,我改變了代碼中的查詢結果,我管理了兩個這樣做與多個查詢語句(不是很安全)。所以我認爲回調不是很好的想法... – sauletasmiestas