Vielen Dank im Voraus für einen Blick auf das.
Ich habe eine asynchrone Aufgabe innerhalb einer Schleife, die nicht funktioniert. Ich habe dafür gesorgt:
Diese Funktion gibt ... nichts aus !? Aus irgendeinem Grund feuern die grunt.log.writeln-Anweisungen nicht einmal ab. Aufgabe wird ohne Fehler abgeschlossen. Ich habe auch versucht, eine Verzögerung von 20 Sekunden hinzuzufügen, falls das Skript fertig war, bevor die asynchrone Aufgabe zurückgegeben wurde. Seltsamerweise, wenn ich nicht "done (error)" rufe, werden die Dateien in die Datei geschrieben (wenn ich die writelns durch grunt.file.write Statements ersetze).
%Vor%Referenzen:
done()
sollte nur aufgerufen werden, wenn die gesamte Operation abgeschlossen ist, dh wenn alle exec()
-Methoden ihre Rückrufe ausgeführt haben. Derzeit führen Sie den done
-Rückruf bei jeder Iteration durch. Sie können dies leicht erreichen, indem Sie die Methode forEach
im Knotenmodul async verwenden, das mit grunt ( grunt.util.async
( oder forEachSeries
, wenn die exec()
-Methoden in der Reihenfolge ausgeführt werden sollen.
So etwas (nicht getestet):
%Vor%Tags und Links gruntjs node.js asynchronous closures callback