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.
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?
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.
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 ..
Tags und Links javascript asynchronous ecmascript-6 co