Mapping über ein Array von Aufgaben in Javascript

8

Ich habe angefangen, Ramda / Folktale anzuschauen. Ich habe ein Problem, wenn ich versuche, ein Array von Aufgaben aus einem Verzeichnis abzubilden. Ich versuche Dateiinhalte zu analysieren.

%Vor%

Ich lese die Dateien in einem Verzeichnis und gebe eine Aufgabe zurück. Wenn dies behoben wird, sollte es in die readFile-Funktion (die eine neue Aufgabe zurückgibt) gehen. Sobald es die Datei liest, möchte ich, dass es nur ein paar Bits ausgibt.

Mit den folgenden:

%Vor%

Es kommt in die readFile-Funktion, aber "Datei" ist ein Array von Dateien, so dass es Fehler gibt.

Mit:

%Vor%

Wir kommen nie in fs.readfile (), aber "file" ist der eigentliche Dateiname.

Ich bin ziemlich ratlos und die Dokumentation ist verwirrend. Irgendwelche Vorschläge willkommen.

Danke

    
SpaceBeers 04.11.2015, 09:40
quelle

3 Antworten

9
%Vor%

Ich habe jede der Transformationen in einer separaten Zeile geschrieben, damit ich Typensignaturen hinzufügen kann, die die verschachtelten Maps leichter verständlich machen. Diese könnten natürlich über R.pipe zu einer Pipeline kombiniert werden.

Die interessantesten Schritte bestehen darin, R.sequence zu verwenden, um Array (Task String) in Task (Array String) zu transformieren und R.unnest , um Task (Task (Array String)) in Task (Array String) zu transformieren.

Ich schlage vor, sich das plaid / async-Problem anzuschauen, falls Sie das noch nicht getan haben.

    
davidchambers 04.11.2015, 17:40
quelle
4

Wie David vorgeschlagen hat, ist commute nützlich, um eine Liste einiger Anwendungen (z. B. Task ) in eine einzige Anwendung zu konvertieren, die die Werteliste enthält.

  

var app = compose(chain(map(readFile)), readDirectories);

     

Wir kommen nie in fs.readfile (), aber "file" ist der eigentliche Dateiname.

Die eng verwandte commuteMap kann auch hier helfen, da sie sich um den separaten map -Schritt kümmert Der obige Code sollte auch wie folgt dargestellt werden können:

%Vor%     
Scott Christopher 04.11.2015 21:03
quelle
0

Ich hatte ein ähnliches Problem beim Lesen aller Dateien in einem Verzeichnis und begann mit pipeP von ramda:

%Vor%

Promise.all scheint beim Lesen der Dateien erforderlich zu sein, da pipeP einen Wert oder ein Versprechen erwartet, aber eine Reihe von Versprechen erhält, die Dateien zu lesen. Was mich verwirrt ist, warum ich eine Funktion machen musste, um das Promise.all zurückzugeben, anstatt es einzubinden.

Ihre Verwendung von task / fork ist faszinierend, da die Fehlerbehandlung eingebaut ist. Möchte pipeP einen catch-Block haben, weil ohne es vielleicht zu injizieren, was für einen Anfänger wie mich schwer ist, das richtig zu machen. p>     

Brian Murphy-Dye 20.12.2015 19:52
quelle