2016-11-22 1 views
-4

Ich kann nicht auf Daten [i] in der Callback-Funktion zugreifen. mein Code
Dies ist:Access Array Objekt in einem Callback

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

Ich denke, das 'i' existiert nicht innerhalb Ihrer' mysql.query' Rückkehr. Versuchen Sie 'console.log (i)' anstelle von 'console.log (data [i])' – driconmax

+0

das ist nicht das, wonach ich suche. Ich möchte die Nummer i des Datenarrays – vincent0110

+0

Obwohl wahrscheinlich nicht relevant für Ihr Problem - was ich keine offensichtliche Lösung zu sehen - Sie wahrscheinlich eine 'var' vor Ihrer Iteration Variablendeklaration fehlt (dh,' var i = 0'). –

Antwort

0

Durch die Zeit, Ihre erste SQL-Abfrage beendet die Schleife abgeschlossen ist und der Wert von i 1 ist, so würde ich Ihren Code zu erwarten hi2 zweimal loggt sein. Verschieben Sie Ihre Abfrage außerhalb der for-Schleife.

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 danke. das funktioniert für den Moment :) – vincent0110

+0

'data.forEach (Funktion (Wert, Index) { \t mysql.query ('...', Funktion (Fehler, Ergebnis) { \t \t console.log (Index, Wert, err || Ergebnis); \t}); }) ' – Thomas