Das asynchrone Modul von nodejs: https://github.com/caolan/async bietet zwei ähnliche Methoden: async.waterfall
und async.series
.
Was ist der Unterschied zwischen ihnen?
javascript
node.js
asynchronous
node-async
Bruce Dou
quelle
quelle
waterfall
nochseries
einen Wert zurückgibt. Es wird erwartet, dass das Ergebnis im optionalen Rückrufparameter verwendet wird.Beide Funktionen übergeben den Rückgabewert jeder Funktion an die nächste. Wenn dies erledigt ist, wird der Hauptrückruf aufgerufen und der Fehler übergeben, falls ein Fehler auftritt.
Der Unterschied besteht darin
async.series()
, dass nach Abschluss der Serie alle Ergebnisse an den Hauptrückruf übergeben werden.async.waterfall()
Übergibt nur das Ergebnis der zuletzt aufgerufenen Funktion an den Hauptrückruf.quelle
async.waterfall()
befasst sich mit einemaction that relies on the previous outcome
.async.series()
befasst sich mit einer Aktion, die willsee all the result at the end
quelle
Ich halte async.waterfall für schädlich, da es schwierig ist, einmal geschriebene und fehleranfällige Änderungen vorzunehmen, da andere Funktionen die Signatur stark ändern, wenn Sie mehr Argumente angeben.
Ich kann es
async.autoInject
als großartige Alternative zu async.waterfall nur empfehlen. https://caolan.github.io/async/autoInject.js.htmlWenn Sie sich für die Verwendung von async.waterfall entscheiden, empfehle ich, alles in einem Objekt zu speichern, damit Ihre Funktionen Länge / Signaturen nicht wie folgt ändern müssen:
Warnung: Dies ist ein schlechtes Muster
Mach es nicht so. Dies ist ein viel besseres Muster :
Auf diese Weise werden Sie sich nicht die Haare ausreißen, um sicherzustellen, dass die Funktionsargumente die richtige Länge haben. Die erste Funktion akzeptiert nur einen Arg-Callback. Alle übrigen sollten zwei Argumente akzeptieren - einen Wert und einen Rückruf. Halten Sie sich an das Muster und Sie bleiben gesund!
quelle