2016-11-22 8 views
-4

コールバック関数でdata [i]にアクセスできません。
これは私のコードです:コールバック内のAccess Arrayオブジェクト

var data = ['HI', 'Hi2']; 

for(var i=0;i<data.length;i++){ 
console.log(data[i]); // Just works fine 
//use mysql to query database 
mysql.query('some sql stuff', function(err,result){ 
    console.log(data); // Just works fine 
    console.log(data[i]); // Doesn't work 
    } 
); 
} 
+2

私は 'mysql.query'リターンの内側に' i'が存在しないと思います。 'console.log(data [i])'の代わりに 'console.log(i)'を試してください。 – driconmax

+0

は私が探しているものではありません。私はデータ配列の番号iを求めています – vincent0110

+0

明らかな解決策が見当たりませんが、おそらくあなたの問題には関係しませんが、反復変数宣言の前に 'var'がない可能性があります(つまり' var i = 0 ')。 –

答えて

0

時間では、あなたの最初のSQLクエリは、ループが完了し、iの値が1ので、私はあなたのコードは二回hi2ログインするために期待され終了します。 forループの外側にクエリを移動します。

var data = ['HI', 'Hi2']; 

for(i=0;i<data.length;i++){ 
    console.log(data[i]); // Just works fine 
    //use mysql to query database 
    logStuff(i); 
} 

function logStuff(i) { 
    mysql.query('some sql stuff', function(err,result){ 
    console.log(data); // Just works fine 
    console.log(data[i]); // Doesn't work 
    }); 
} 
+0

okありがとうございます。それは今のところ働いています:) – vincent0110

+0

'data.forEach(function(value、index){ \t mysql.query( '...'、function(err、result){ \t \t console.logエラー||結果); \t}); }) ' – Thomas

関連する問題