Ich bin neu in JavaScript und in node.js. Ich möchte eine Schleife durch ein Verzeichnis und fügen Sie alle Datei stat (nicht andere Verzeichnisse) zu einem Array. Wie Sie unten sehen, gibt es ein Problem mit meinem Code, da der Callback wahrscheinlich aufgerufen wird, nachdem die for-Schleife beendet ist, so dass die Verwendung der "i"-Variable in der Callback-Methode nicht funktionieren wird. Aber wie sollte der Code aussehen, damit das untenstehende Snippet funktioniert? Hat es etwas mit Closures zu tun?
Danke für die Hilfe!
fs.readdir(SYNCDIR, function(err1, files) {
var filesOnly = [];
if(!err1) {
for(var i = 0; i < files.length; i++) {
var imgFilePath = SYNCDIR + '/' + files[i];
fs.stat(imgFilePath, function(stat){
if (stat.isFile()){
filesOnly[i] = stat; // This will not be correct since the for-loop has finished
}
});
}
}
});
0 Stimmen
Ich glaube, dass Node seit Ihrem Posting einige Synch-Funktionen zum fs-Namensraum hinzugefügt hat.
0 Stimmen
Verwandt (wenn nicht sogar doppelt): JavaScript-Schließung in Schleifen - einfaches praktisches Beispiel