So führen Sie eine asynchrone Aufgabe gegen es6-Generatoren in der Schleife aus

8

Ich verstehe, wie man Generatoren verwendet, um den asynchronen Code gut aussehen zu lassen. Ich habe einen einfachen Generator *all , der ein page benötigt, wird einen einzelnen Wert zurückgeben.

Dann habe ich noch einen Generator *allDo , der *all für die Seiten 1 bis 30 benutzt und für jedes Ergebnis asynchrone task .

Dann habe ich einen anderen Generator *allBatchDo , der 3 Seiten stapelweise ausführt und asynchrone task ausführt.

%Vor%

Beispiel für die Verwendung dieser Generatoren wäre:

%Vor%

Die Frage ist, ob dies eine legitime Verwendung von asynchronen ES6-Features ist, oder gibt es eine abstrakte integrierte Lösung für meinen Anwendungsfall?

    
eguneys 01.02.2015, 06:28
quelle

3 Antworten

4

Wenn Sie Generatoren verwenden möchten, um async zu machen, dann ist Ihr Code gültig. ES6 enthält nur Versprechen zu asynchronen Operationen. ES7 wird async / erwarten. Sie können auch eine gute Bibliothek verwenden: Ссылка oder verwenden Sie nur native Versprechen Promise.All ohne Generatoren.

    
sribin 04.02.2015 06:57
quelle
0

Ich würde sagen, dass dieser Code ziemlich langsam sein könnte, da Sie yield * verwenden, wird die gesamte Aufgabe sequenziell ausgeführt und nimmt möglicherweise viel mehr Zeit in Anspruch als nötig (vorausgesetzt, dass mockPromise einige io tut) Versprechungen verwenden

auch Ihre Verwendung von while (true) ist sehr seltsam ..

    
kruczy 10.02.2015 12:09
quelle
0

Nachfolgend finden Sie einige Links, die Ihnen bei der Runner-Funktion von asynce helfen können.

Ссылка Und Ссылка

    
Deejay 10.02.2015 17:44
quelle