2016-06-20 4 views
1

Ist dieser Unterschied signifikant? Ist es:Iterator vs. iteratee

  • iterator = einige Abstraktion von Iterieren über eine Reihe von Datenstrukturen
  • iteratee = die tatsächliche Datenstruktur iteriert wird über

ich durch async ‚s doc lesen und sehen die Verwendung von "iteratee" überall. Gut, es macht die eigentliche Iteration nicht, deshalb ist Iterator nicht der richtige Name dafür. Aber von meinem Verständnis von "iteratee" oben, sollte es auch keine Funktion sein (iteratee = Datenstruktur in meinem Kopf - wenn überhaupt, ist Iterator die Funktion, die die Iteration durchführt).

Wenn Sie nicht vertraut sind mit async 's iteratee: Es ist eine Funktion, die 2 Argumente, den nächsten Wert in der Sammlung, die Sie durchlaufen, und eine Funktion, die einen Fehlerwert und einen Ergebniswert nimmt. Sie sollten im iteratee etwas Asynchrones tun und dann das zweite Argument (die Funktion (err, result)) mit einem Fehler oder einem Ergebnis aufrufen.

(Sie geben dann einen weiteren Callback als Parameter (abgesehen von der iteratee) zu was auch immer Sie tun (Map, Filter, etc ...), um die Ergebnisse des Aufrufs der async op iteratee über alle Ihre ursprünglichen Sammlung zu verarbeiten Elemente).

Nur neugierig: Ist "iteratee" der richtige Name dafür?

Antwort

2

Ein Iterator ruft einen Iteratee auf, in diesem Fall einen Callback. In async wäre es verwirrend, wenn wir dem iteratee einen Callback geben, da die meisten iteratees einen Callback übergeben, um den Abschluss anzuzeigen.

Für einige Hintergrund ist hier die async.js issue where this was discussed und es ist auch die Art, wie wir die Iterator-Callbacks in lodash und unterstreichen. Diese underscore thread ist die Grundlage für die Änderungen in den drei Bibliotheken.