For-Loop- und Async-Callback in node.js?
Ich bin neu in JavaScript und node.js. Ich möchte eine Schleife durch ein Verzeichnis, und fügen Sie alle Datei-stat (keine weiteren Verzeichnisse) in ein array. Wie Sie unten sehen gibt es ein problem mit meinem code, da die callback-wahrscheinlich wird aufgerufen, nachdem die for-Schleife beendet ist, so dass die Verwendung der "ich"-variable in der callback-Methode wird nicht funktionieren. Aber wie sollte der code Aussehen, so dass die unten snippet funktioniert? Hat es etwas zu tun mit Verschlüssen?
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
}
});
}
}
});
InformationsquelleAutor der Frage exkoria | 2011-09-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du Recht haben müssen, verwenden Sie einen Verschluss. Sollten Sie wickeln Sie die Inhalte der
for
Schleife in einer sich selbst aufrufenden Funktion zu erhalten die Werti
für jede iteration.InformationsquelleAutor der Antwort Gary Chambers
One-way ist, zu schreiben, die Innereien der Schleife zu verwenden, Verschluss:
Ein besser aussehendes Beispiel, um die gleiche, mit Array.der Prototyp.forEach:
InformationsquelleAutor der Antwort einaros
Alternativ den neuen threads-Modul ( https://github.com/robtweed/Q-Oper8 ) und dann kann man all diese Dinge viel mehr einfach mit standard-synchron-Codierung innerhalb des threads, die Kind-Prozesse, da Sie nur mit einem Benutzer-Anforderung zu einem Zeitpunkt.
Abschied asynchrone Logik und verschachtelte callbacks!
InformationsquelleAutor der Antwort Rob Tweed