2016-07-19 9 views
-3

Ich habe diesen Code in node.jswie synchrone Aufruf an Funktion in node.js zu machen?

geschrieben
var zipEntries = zip.getEntries(); 
zipEntries.forEach(function (zipEntry) { 

     if (zipEntry.entryName.toString().indexOf('.csv') > -1) { 
      var data = zip.readFile(zipEntry.entryName.toString()); 
      zip.extractEntryTo(zipEntry.entryName.toString(), "./csvdata", false, true); 
      var filepath = zipEntry.entryName.toString(); 
      filepath = filepath.replace('largecsvzip2/', ''); 
      **some_function**("./csvdata/" + filepath); 
     } 
    }); 

Problem ist, dass Funktion heißt some_function in der Schleife nach vorheriger Durchführung von some_function Finish nennen sein muss.

derzeit funktionieren Anrufe vor seiner vorherigen Ausführung zu beenden.

+0

ich weiß, über Versprechungen zu verwenden. Wie kann ich Versprechen hier verwenden? –

+0

Wenn Sie sagen, einige dieser Funktionen sind asynchron. Geben diese Funktionen ein Versprechen zurück oder müssen Sie eine Rückruffunktion bereitstellen? Ich denke mal, Sie möchten vielleicht den Lesern wissen lassen, welche Funktion asynchron ist. –

+0

nein, diese Funktionen geben nichts zurück –

Antwort

0

Verwendung async eachSeries - async docs

+0

Dank für die Antwort –

0

U brauchen promise.all für u-Lösung zu verwenden. api promises

fügen Sie alle Ihre Asynchron-Funktion zu stapeln und promise.all

+0

'promise.all' nicht OP helfen, wie er bei der Durchführung von Anrufen in einer sequentiellen Materie sucht. Vielleicht möchtest du deine Lösung so verändern, dass sie "versprochen" ist. –

+0

danke für die Antwort –